How can I change the IP address of all sites in IIS6 using powershell 1.0?
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 "=========================" } }}