in IIS, Powershell

IIS Dublicate yani Mükerrer Binding’leri Powershell Scripti Yardımı İle Arayıp Bulup Ekranda Göstermek o_O

Bu açıklayıcı başlıktan anlaşılacağı gibi bundan sonra bir şey yazmama  gerek yok sanırım :) Olsun;

IIS bindingleri çok hassas konu.
Vhost mantığı bindings üzerine kurulu olduğundan programatik olarak mükerrer kayıt girdiğinizde bütün IIS’in durması veya en iyisi bir web sitesinin durmasına yol açabiliyor.
Hele birde IIS üzerinden yüzlerce site varsa hangi binding’in hataya neden olduğunu bulmak sayısal lotoda 4 tutturmak gibi oluyor.

Bu sorunu çözen ufak bir powershell script’i script kiddie moduda googling yaparak aşağıda hazırladım.

Function Get-Duplicate {
    param($array, [switch]$count)
    begin {
        $hash = @{}
    }
    process {
        $array | %{ $hash[$_] = $hash[$_] + 1 }
        if($count) {
            $hash.GetEnumerator() | ?{$_.value -gt 1} | %{
                New-Object PSObject -Property @{
                    Value = $_.key
                    Count = $_.value
                }
            }
        }
        else {
            $hash.GetEnumerator() | ?{$_.value -gt 1} | %{$_.key}
        }    
    }
}

$AllBindingsInfo = Get-WebBinding | select bindingInformation
Get-Duplicate $AllBindingsInfo

Bir kaç konu var dikkat edilesi:

1. Powershell konsolunu çalıştırdıktan sonra

Import-Module WebAdministration

demelisiniz ki Get-WebBinding komutu çalışabildin.

2. Powershell console’unu Administrator hakları ile çalıştırmanız gerekiyor.

3. Powershell console’unu ilk açtığınızda Executation Policy direkt çalıştırtmaz o nedenle aşağıdaki komutu verin.

Set-ExecutionPolicy Unrestricted

Not: fonksiyonu buradan arakladım http://www.mikepfeiffer.net/2010/04/working-with-duplicate-array-values-in-powershell/

Yorum Bırak

Comment