Yirmi sunucuda aynı kontrolü yapmanız gerektiğinde ne yaparsınız — her birine tek tek RDP ile mi bağlanırsınız? Bu yaklaşım beş sunucuda katlanılabilir, yirmisinde günün yarısını götürür. PowerShell Remoting (WinRM) tam olarak bu ölçeklenemeyen döngüyü kırmak için var: tek bir konsoldan onlarca makineye eşzamanlı komut gönderebiliyorsunuz.
WinRM’i Aktifleştirme
Modern Windows Server sürümlerinde WinRM genellikle varsayılan olarak etkin durumda, ama 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. Yirmi sunucuda aynı anda disk doluluk kontrolü yapmak istediğinizde:
$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ıyor:
$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 Tarafını İhmal Etmeyin
Varsayılan WinRM trafiği (port 5985) şifrelenmemiştir; üretim ortamında HTTPS (port 5986) ve sertifika tabanlı kimlik doğrulama kullanılmalı. TrustedHosts listesinde * yerine sadece gerçekten yönetilecek sunucu/domain’i belirtmek de aynı derecede önemli. Daha ileri gitmek isteyenler için JEA (Just Enough Administration), kullanıcılara tam yönetici yetkisi vermek yerine sadece ihtiyaç duydukları komutlara erişim tanımlayan kısıtlı endpoint’ler oluşturmayı mümkün kılıyor.
Kendi ortamımda her sabah, kritik uygulama sunucularındaki belirli servislerin (IIS, SQL, özel uygulama servisleri) çalışır durumda olduğunu tek bir script ile kontrol eden, çalışmayan varsa otomatik yeniden başlatıp bana bildirim gönderen bir rutin kullanıyorum. “Her şey ayakta mı?” sorusunun cevabını artık ben aramıyorum, script benim yerime arıyor.
Kısaca
PowerShell Remoting, tek makine yönetiminden “filo” yönetimine geçişin anahtarı. HTTPS, JEA ve sınırlı TrustedHosts gibi temel güvenlik önlemleriyle kurulduğunda, onlarca sunucuyu tek kişi ile verimli şekilde yönetmenizi mümkün kılıyor.