2009-10-28 10 views
4

Использование Powershell 1.0 под Windows Server 2003 с IIS 6.Как изменить IP-адрес всех сайтов в IIS6 с помощью powershell 1.0?

У меня около 200 сайтов, на которые я хотел бы изменить IP-адрес (как указано в свойствах веб-сайта на вкладке «Веб-сайт» на веб-сайте . поле идентификации»раздела "IP-адрес"

Я нашел этот код:

$site = [adsi]"IIS://localhost/w3svc/$siteid" 
$site.ServerBindings.Insert($site.ServerBindings.Count, ":80:$hostheader") 
$site.SetInfo() 

Как я могу сделать что-то вроде этого, но:

  1. Lo op через все сайты в IIS
  2. Не вводите значение заголовка узла, но меняйте существующий.

ответ

10

Следующий скрипт PowerShell поможет:

$oldIp = "172.16.3.214" 
$newIp = "172.16.3.215" 

# Get all objects at IIS://Localhost/W3SVC 
$iisObjects = new-object ` 
    System.DirectoryServices.DirectoryEntry("IIS://Localhost/W3SVC") 

foreach($site in $iisObjects.psbase.Children) 
{ 
    # Is object a website? 
    if($site.psbase.SchemaClassName -eq "IIsWebServer") 
    { 
     $siteID = $site.psbase.Name 

     # Grab bindings and cast to array 
     $bindings = [array]$site.psbase.Properties["ServerBindings"].Value 

     $hasChanged = $false 
     $c = 0 

     foreach($binding in $bindings) 
     { 
      # Only change if IP address is one we're interested in 
      if($binding.IndexOf($oldIp) -gt -1) 
      { 
       $newBinding = $binding.Replace($oldIp, $newIp) 
       Write-Output "$siteID: $binding -> $newBinding" 

       $bindings[$c] = $newBinding 
       $hasChanged = $true 
      } 
      $c++ 
     } 

     if($hasChanged) 
     { 
      # Only update if something changed 
      $site.psbase.Properties["ServerBindings"].Value = $bindings 

      # Comment out this line to simulate updates. 
      $site.psbase.CommitChanges() 

      Write-Output "Committed change for $siteID" 
      Write-Output "=========================" 
     } 
    } 
} 
+0

При запуске этого я получаю следующее приглашение ... команды New-объект в положении команды трубопровода 1. Значения питания для следующих параметров: TypeName: – User

+0

Забыл, что PS использует обратную линию, чтобы указать продолжение строки – Kev

+0

удивительный, который сработал! – User

 Смежные вопросы

  • Нет связанных вопросов^_^