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

StackOverflow https://stackoverflow.com/questions/1635882

Вопрос

Использование 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()

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

<Ол>
  • Просмотрите все сайты в IIS
  • Не вставлять значение заголовка хоста, но изменить существующее.
  • Это было полезно?

    Решение

    Должен помочь следующий скрипт 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 "========================="
            }
        }
    }
    
    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top