Добавление новой привязки сервера к сайту IIS 6 с использованием WMI и Powershell - PullRequest
0 голосов
/ 11 февраля 2010

При наличии действующего $ сервера следующий код переместит все привязки сервера из их существующей подсети в красивую, блестящую новую с 1.1.1.

$objWMI = [WmiSearcher] "Select * From IIsWebServerSetting WHERE Name = 'w3svc/10'" 
$objWMI.Scope.Path = "\\" + $server + "\root\microsoftiisv2"    
$objWMI.Scope.Options.Authentication = 6 
$sites = $objWMI.Get() 
foreach ($site in $sites) 
{
    $bindings = $site.ServerBindings 
   foreach ($binding in $bindings) 
   {
       $binding.IP = $binding.IP -ireplace "^\d{1,3}\.\d{1,3}\.\d{1,3}","1.1.1" 
   } 
   $site.ServerBindings = $bindings 
   $site.Put() 
}

Мне это нравится. Работает отлично.

Проблема возникает, когда я пытаюсь добавить новую привязку сервера в список. Это полностью курило меня.

Я могу клонировать существующую привязку с:

   $newBinding = $existingBinding.Clone()
   $newBinding.Hostname = "test." + $newBinding.Hostname
   $bindings += $newBinding

У привязок будет 1 новый элемент, и новый элемент будет того же типа, что и его братья, но когда я пытаюсь обновить свой $ site.ServerBindings, я провожу тост:

Exception setting "ServerBindings": "Unable to cast object of type'System.Management.Automation.PSObject' to type 'Sys tem.Management.ManagementBaseObject'."

Добавление нового элемента в исходный массив изменяет массив из ManagementBaseObject в PSObject?

Ничто другое, что я пытаюсь, похоже, тоже не работает. Я не могу добавить новый элемент к значению $ site.ServerBindings, потому что он доступен только для чтения.

Я ценю любую помощь.

1 Ответ

1 голос
/ 11 февраля 2010

Попробуйте распаковать объект PSObject перед добавлением новой привязки сервера, например ::100100

$bindings += $newBinding.psobject.baseobject

Похоже, что это ошибка в PowerShell 2.0, которую, я надеюсь, скоро исправят.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...