2026-06-18

IIS sunucu ve powershell

Kurulumunu da powershell ile tamamladığım IIS sunucuma, şu şekilde bir powershell oturumu ile uzaktan bağlıyım.

Enter-PSSession -Computername IISsunucu1

Sunucu bilgisayar üzerinde kurulu IIS sistelerini görmek için iki benzer cmdlet var:

Get-Website

ve 

Get-IISSite

İkisi de benzer çıktı üretiyor, benzer işlevselliğe sahip. Birincisi WebAdministration modülünün bir parçası. İkincisi ise IISAdministration modülünün bir parçası. İkincisinin daha yeni bir modül olduğu söyleniyor. Ama yeni modülde tüm cmdlet'lerin karşılıkları yok.

Yüksek olasılıkla sunucunuzda birden fazla IIS sitesi olacak. Bu komutlar da size bir dizi (array) nesnesi dönecek. Bu dizinin Name, ID, Physical Path, Bindings gibi alanları olacak. Genellikle bu listelenen sitelerden biri ile ilgileniyor oluruz. İstediğimiz siteyi Name alanı ile süzebiliriz.

Get-IISSite -Name site1

Nesnenin derinlerinden site loglarının saklandığı konumu çekmek için

$s1.LogFile.Directory

kullanabilirim.

Bir siteyi durdurmak veya yeniden başlatmak için

Stop-IISSite -Name site1
Start-IISSite -Name site1

kullanılabilir. Mevcut durum zaten Get-IISSite cmdlet'inin state alanında görünüyor.

Sunucumda IP tabanlı kısıtlama/izin modülü kurulumu merak ettim.

Get-WindowsFeature Web-IP-Security

şöyle bir sonuç döndü:

Display Name                                            Name                       Install State
------------                                            ----                       -------------
            [ ] IP and Domain Restrictions              Web-IP-Security                Available

Kurulu değilmiş. Kurmak için

Install-WindowsFeature Web-IP-Security

kullandım.

IIS'te IP kısıtlaması iki farklı şekilde olabilir; verilen IP adreslerine izin verip geri kalan her bağlantıyı engellemek veya tam tersi verilen IP adreslerini engellemek, geri kalan her bağlantıya izin vererek. Mevcut durumda sitemizin hangi yapıda olduğunu görelim:

(Get-WebConfigurationProperty `
-Filter "system.webServer/security/ipSecurity" `
-PSPath "IIS:\" `
-Location "site1" `
-Name allowUnlisted).Value

allowUnlisted, listede olmayanlara izin verilsin mi sorusunu yanıtlar. True dönüyorsa sitemiz listede olmayanlara izin veren, yani listedeki IP adreslerini engelleyen durumdadır. False dönüyorsa listedekilere izin verir, geri kalanı engeller. Şimdi listemizi görelim.

Get-WebConfiguration `
      -Filter "system.webServer/security/ipSecurity/add" `
      -PSPath "IIS:\" `
      -Location "site1" | Select-Object ipAddress, subnetMask, allowed


Hiç yorum yok: