У меня уже давно есть куча автоматизированных систем VBS для IIS 6, в том числе одна, которая получает / устанавливает сложные привязки серверов на нескольких фермах парных серверов, каждая из которых имеет десятки приложений, каждое из которых имеет 3-12 заголовков узлов. Каждое приложение имеет имя хоста, полное имя хоста и имя хоста с включенным аварийным восстановлением, поэтому они могут быть беспорядочными для обслуживания вручную.
Я делал все свои vbs с помощью ADSI, но я думаю, что WMI, вероятно, более гибок, чем ADSI, с точки зрения полного обслуживания сервера. Пожалуйста, поправьте меня, если я ошибаюсь. Поэтому сейчас я пытаюсь перейти на PowerShell + WMI, чтобы подготовиться к Windows 2008 + IIS 7.5. Мне нравится учебный процесс, но я столкнулся с проблемой на этом пути.
Я могу получить / установить все свойства через WMI на моих веб-серверах IIS 6, кроме ServerBindings. Я чувствую, что я близко, но мне не хватает некоторого слоя сдерживания, и я просто не могу заставить объекты, которые я строю, перенаправить на нужный объект автоматизации.
Следующий код получает и читает ServerBindings просто отлично. Я просто не могу найти способ записать свои изменения обратно. Любой совет приветствуется.
$objWMI = [WmiSearcher] "Select * From IISWebServerSetting"
$objWMI.Scope.Path = "\\" + $server + "\root\microsoftiisv2"
$objWMI.Scope.Options.Authentication = 6
$sites = $objWMI.Get()
foreach ($site in $sites)
{
$bindings = $site.psbase.properties | ? {$_.Name -contains "ServerBindings"}
foreach ($pair in $bindings.Value.GetEnumerator())
{
# The pair object is a single binding and contains the correct data
$pair
$pair.IP
$pair.Port
$pair.Hostname
# And this line will successfully erase the contents of
# the ServerBindings
$bindings.Value = @{}
# but I can't figure out what to do to update $bindings.Value
}
$site.Put()
}
Мне нравится Powershell, так что спасибо за любую помощь, которую вы можете предложить.