# Uzaktan Yönetimde Güç: PowerShell Remoting (WinRM) Kurulumu ve Güvenli Komut Çalıştırma

- Bağlantı: https://musti.org/powershell/powershell-remoting-winrm-kurulum/
- Yayımlanma: 2026-09-21T21:38:28+03:00
- Yazar: mmutlu

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.
