Onlarca sunucuya tek tek RDP ile bağlanıp aynı komutu çalıştırmak, ölçeklenemeyen bir yaklaşımdır. PowerShell Remoting (WinRM), tek bir konsoldan onlarca makineye eşzamanlı komut göndermenizi sağlar.
WinRM’i Aktifleştirme
Modern Windows Server sürümlerinde WinRM genellikle varsayılan olarak etkindir, ancak doğrulamak ve gerekirse aktifleştirmek için:
# Hedef sunucuda çalıştırılır Enable-PSRemoting -Force Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*.sirket.local" -Force
Tek Bir Sunucuya Bağlanma
Enter-PSSession -ComputerName SRV-WEB01 -Credential (Get-Credential)
Birden Fazla Sunucuda Aynı Anda Komut Çalıştırma
Asıl güç burada ortaya çıkıyor — 20 sunucuda aynı anda disk doluluk kontrolü yapmak:
$sunucular = @("SRV-WEB01", "SRV-WEB02", "SRV-DB01", "SRV-APP01")
Invoke-Command -ComputerName $sunucular -ScriptBlock {
Get-PSDrive C | Select-Object @{N='Sunucu';E={$env:COMPUTERNAME}}, Used, Free
} -Credential (Get-Credential) | Format-Table -AutoSize
Kalıcı Oturumlar (Persistent Sessions) ile Verimlilik
Her komut için yeni bağlantı kurmak yerine, kalıcı bir oturum açıp birden fazla komutu aynı oturumda çalıştırmak performans kazandırır:
$oturum = New-PSSession -ComputerName SRV-WEB01
Invoke-Command -Session $oturum -ScriptBlock { Get-Service W3SVC }
Invoke-Command -Session $oturum -ScriptBlock { Restart-Service W3SVC }
Remove-PSSession $oturum
Güvenlik: WinRM’i Sıkılaştırmak
- HTTPS kullanın: Varsayılan WinRM trafiği şifrelenmemiştir (HTTP, port 5985); üretim ortamında HTTPS (port 5986) ve sertifika tabanlı kimlik doğrulama kullanılmalı
- TrustedHosts’u sınırlayın:
*yerine sadece gerçekten yönetilecek sunucu/domain’i belirtin - JEA (Just Enough Administration): Kullanıcılara tam yönetici yetkisi yerine, sadece ihtiyaç duydukları komutlara erişim tanımlayan kısıtlı endpoint’ler oluşturun
Sahadan Bir Kullanım: Toplu Servis Sağlık Kontrolü
Her sabah, kritik uygulama sunucularındaki belirli servislerin (IIS, SQL, özel uygulama servisleri) çalışır durumda olduğunu tek bir script ile kontrol edip, çalışmayan varsa otomatik olarak yeniden başlatıp bana bildirim gönderen bir rutin kullanıyorum. Bu, sabah ilk iş “her şey ayakta mı?” kontrolünü tamamen otomatikleştiriyor.
Sonuç
PowerShell Remoting, tek makine yönetiminden “filo” (fleet) yönetimine geçişin anahtarıdır. Doğru güvenlik önlemleriyle (HTTPS, JEA, sınırlı TrustedHosts) kurulduğunda, onlarca sunucuyu tek kişi ile verimli şekilde yönetmenizi mümkün kılar.