How to change the IP address of all sites in IIS6 using powershell 1.0?

Using Powershell 1.0 under Windows Server 2003 with IIS 6.

I have about 200 sites to which I would like to change the IP address (as indicated in the website properties on the "Website" tab in the "Website Identification" section "IP Address".

I found this code:

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

How can I do something like this, but:

  • Scrolling through all sites in IIS
  • Do not enter a host header value, but modify an existing one.
+4
source share
1 answer

The following PowerShell script should help:

 $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 "=========================" } } } 
+10
source

All Articles