При наличии действующего $ сервера следующий код переместит все привязки сервера из их существующей подсети в красивую, блестящую новую с 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, потому что он доступен только для чтения.
Я ценю любую помощь.