كيف يمكنني تغيير عنوان 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()

كيف يمكنني أن أفعل شيئًا كهذا ولكن:

  1. قم بالمرور عبر كافة المواقع في IIS
  2. لا تقم بإدراج قيمة رأس مضيف، ولكن قم بتغيير قيمة موجودة.
هل كانت مفيدة؟

المحلول

من المفترض أن يساعد البرنامج النصي 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