Как я могу изменить IP-адрес всех сайтов в IIS6, используя powershell 1.0? - PullRequest
4 голосов
/ 28 октября 2009

Использование Powershell 1.0 под Windows Server 2003 с IIS 6.

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

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

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

Как я могу сделать что-то подобное, но:

  1. Перебрать все сайты в IIS
  2. Не вставлять значение заголовка хоста, но изменить существующее.

1 Ответ

10 голосов
/ 28 октября 2009

Должен помочь следующий скрипт 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 "========================="
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...