Я ищу способ просмотреть все параметры привязки , уже настроенные в моем IIS.
Я использую это для работы с IIS в Powershell:
Import-Module WebAdministration
Пока я смог получить необходимую основную информацию:
$Websites = Get-ChildItem IIS:\Sites
Мой массив $ Веб-сайты заполнены правильно и с помощью следующей команды ...
$Websites[2]
.. Я получаю этот результат:
Name ID State Physical Path Bindings
---- -- ----- ------------- --------------
WebPage3 5 D:\Web\Page3 http *:80:WebPage3
https *:443:WebPage3
Теперь вот часть, с которой у меня возникают трудности:
Я хочу проверить правильность привязки.Чтобы сделать это, мне требуется только привязка.Я попытался:
foreach ($site in $Websites)
{
$site = $Websites[0]
$site | select-string "http"
}
Отладка этого кода показывает, что $ Site не содержит то, что я ожидал: "Microsoft.IIs.PowerShell.Framework.ConfigurationElement".В настоящее время я понятия не имею, как явно получить информацию о привязке, чтобы что-то вроде этого (внутри цикла foreach):
if ($site.name -eq "WebPage3" -and $site.Port -eq "80") {
#website is ok
}
else {
#remove all current binding
#add correct binding
}
Спасибо за вашу помощь!
Решение:
Import-Module WebAdministration
$Websites = Get-ChildItem IIS:\Sites
foreach ($Site in $Websites) {
$Binding = $Site.bindings
[string]$BindingInfo = $Binding.Collection
[string]$IP = $BindingInfo.SubString($BindingInfo.IndexOf(" "),$BindingInfo.IndexOf(":")-$BindingInfo.IndexOf(" "))
[string]$Port = $BindingInfo.SubString($BindingInfo.IndexOf(":")+1,$BindingInfo.LastIndexOf(":")-$BindingInfo.IndexOf(":")-1)
Write-Host "Binding info for" $Site.name " - IP:"$IP", Port:"$Port
if ($Site.enabledProtocols -eq "http") {
#DO CHECKS HERE
}
elseif($site.enabledProtocols -eq "https") {
#DO CHECKS HERE
}
}