J'essaie de contrôler les liaisons dans une application IIS à l'aide de PowerShell. Je voudrais créer un site avec une liaison http et https à l'aide d'un script.
Voici ce que j'ai jusqu'à présent:
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$hostname,
[Parameter(Mandatory=$True,Position=2)]
[string]$installPath,
[Parameter(Mandatory=$False,Position=3)]
[string]$ip
)
Import-Module WebAdministration
$appPoolName = $hostname + 'Pool'
$port = 80
$hostRecord = $hostname+'.example.com'
$bindings = @{protocol="http";bindingInformation=$ip + ":"+ $port + ":" + $hostRecord}
New-Item IIS:\AppPools\$appPoolName
Set-ItemProperty IIS:\AppPools\$appPoolName managedRuntimeVersion v4.0
New-Item IIS:\Sites\$hostname -Bindings $bindings -PhysicalPath $installPath
Set-ItemProperty IIS:\Sites\$hostname -Name applicationPool -Value $appPoolName
Comment ajouter des liaisons à ma $bindings
variable / utiliser un autre mécanisme pour atteindre mon objectif?
powershell
Khanzor
la source
la source
J'ai essayé d'ajouter une liaison https à un site et cela peut être assez douloureux. Il existe de nombreuses façons d'accomplir chaque étape et chacune a ses pièges. Je laisse la solution finale en espérant que quelqu'un la trouvera utile.
Cette solution suppose que vous avez installé IIS et défini un site Web. Appelez le site sample.contoso.com aux fins de cet article. Supposons que vous disposez d'un certificat dans un fichier sample.contoso.com.pfx que vous souhaitez également utiliser.
La première étape consiste à importer le certificat à partir du fichier.
Ce serait bien si cela suffisait. Et dans certains cas, cela peut être le cas. Cependant, pour moi, cela a laissé le certificat sans accès approprié à la clé privée. Cela a provoqué une erreur PowerShell "Une session d'ouverture de session spécifiée n'existe pas. Elle peut déjà avoir été terminée" lorsque je suis allé ajouter le certificat à la liaison (voir cette étape plus tard). La prochaine étape consiste donc à réparer l'ACL pour la clé privée.
Cela permettra au système local d'avoir un accès complet à la clé privée si elle n'est pas héritée du dossier contenant.
Si vous souhaitez obtenir un certificat qui est déjà installé, vous avez besoin du hachage pour celui-ci et pouvez le récupérer avec Get-Item comme ceci:
L'étape suivante consiste à créer la liaison.
Il est important de noter que "https" est sensible à la casse. Si vous utilisez "HTTPS" à la place, vous obtenez un résultat de liaison vraiment différent.
Cette liaison n'a pas encore de certificat attaché, donc la dernière étape consiste à attacher le certificat. Si le certificat est correctement approuvé et que la sécurité est correcte, cette étape doit réussir. Cela peut être difficile s'il y a un problème avec le certificat.
Si cela échoue avec un message sur une session d'ouverture de session n'existe pas, le certificat peut avoir un problème. Consultez l'Observateur d'événements pour plus de détails. Au cours de mes efforts, j'ai trouvé l'événement 5061 dans le journal de sécurité. Lorsqu'il a échoué, il a montré que OpenKey a échoué avec 80090016 (le jeu de clés n'existe pas). Et l'échec était dû au fait que SYSTEM n'avait pas accès à la clé privée.
Cela m'a suffi pour créer la liaison https. La liaison http était un sous-produit de l'utilisation de l'applet de commande New-WebSite. Si ce n'est pas gratuit, je n'ai pas trouvé difficile de créer la liaison du port 80 avec l'applet de commande New-WebBinding.
la source
Je pense que ce que vous recherchez est le suivant:
Fondamentalement, vous devez passer un tableau de liaisons. Plus d'informations utiles ici - ( http://blogs.iis.net/jeonghwan/iis-powershell-user-guide-comparing-representative-iis-ui-tasks )
(Edit: Correction d'une faute de frappe dans la syntaxe du tableau - virgule superflue)
la source