Domain Ortamında Uzak Sunucularda PowerShell Invoke-Command vs PsExec
Powershell

Domain Ortamında Uzak Sunucularda PowerShell Invoke-Command vs PsExec

Yapay Zeka ile Dinle

3 dk okuma · Türkçe sesli anlatım

TTS

Dağcan Nural

Yazar

25 Temmuz 2025
3 dk okuma
0 görüntülenme

Merhaba, bu yazımda sizlere uzak sunucularda PsExec ve Invoke-Command kullanımı konusundan bahsedeceğim. Domain ortamında uzak sunucular üzerinde servis başlatma, durdurma veya yeniden başlatma işlemleri, günlük operasyonlarımızdan bazılarıdır. Domain ortamında çalışan sistemlerde bu işlemleri uzaktan yönetmenin başlıca iki yöntemi öne çıkar: PowerShell Invoke-Command ve Sysinternals aracı olan PsExec.

Bu makalede, her iki yöntemi detaylı olarak ele alacak, adım adım kullanım örnekleriyle birlikte karşılaştırmalı bir bakış sunacağız. Hangi yöntemin sizin altyapınıza daha uygun olduğuna karar verebilmek size kalmış bir seçenektir.

PowerShell Invoke-Command ile Uzak Sunucularda Servis Yönetimi

Invoke-Command, PowerShell Remoting (WinRM) altyapısını kullanarak bir veya birden fazla uzak sunucuda komut çalıştırmanızı sağlar. Özellikle domain içi yönetimlerde en sık kullanılan araçlardan biridir.

PowerShell Remoting’i Etkinleştirme

Yerel bilgisayarda:

Enable-PSRemoting -Force

GPO üzerinden yaygınlaştırmak isterseniz:

GPO Yolu

Computer Configuration> Policies > Administrative Templates > Windows Components > Windows Remote Management > WinRM Service

Firewall Kuralı Açma

Enable-NetFirewallRule -Name “WINRM-HTTP-In-TCP”

Servis Başlatma

Invoke-Command -ComputerName “SunucuAdi” -ScriptBlock {

    Start-Service -Name “servisAdi”

}

Servis Yeniden Başlatma

Invoke-Command -ComputerName “SunucuAdi” -ScriptBlock {

    Restart-Service -Name “servisAdi” -Force

}

Toplu Sunuculara Uygulama

$servers = @(“SRV01”, “SRV02”, “SRV03”)

$serviceName = “w32time”

foreach ($server in $servers) {

    Invoke-Command -ComputerName $server -ScriptBlock {

        param($svc)

        Restart-Service -Name $svc -Force

    } -ArgumentList $serviceName

}

PsExec ile Uzak Sunucularda Servis Başlatma ve Restart Etme

PsExec, Microsoft’un Sysinternals araçları arasında yer alır ve uzak bir bilgisayarda yerel komut satırı üzerinden işlem yapmanızı sağlar. PowerShell Remoting kullanmak istemeyen veya kullanamayan sistemler için ideal bir alternatiftir.

PsExec İndir ve Kur

PsExec İndir

psexec.exe dosyasını bir klasöre çıkarın. Örnek: C:\Tools\

Komut satırında o klasöre geçin:

cd C:\Tools

Servis Başlatma

psexec \\SunucuAdi sc start “ServisAdi”

Servis Yeniden Başlatma

psexec \\SunucuAdi cmd /c “sc stop ServisAdi && sc start ServisAdi”

Farklı Kullanıcıyla Çalıştırmak

psexec \\SunucuAdi -u DOMAIN\admin -p sifre cmd /c “sc stop ServisAdi && sc start ServisAdi”

Toplu Sunuculara Uygulama (PowerShell ile)

Sunucu listesi (servers.txt)

  • SRV-DC01
  • SRV-DB01
  • SRV-APP01

$servers = Get-Content -Path “C:\scripts\servers.txt”

foreach ($srv in $servers) {

    Start-Process -FilePath “C:\Tools\PsExec.exe” -ArgumentList “\\$srv cmd /c `”sc stop w32time && sc start w32time`””

}

Hangi Yöntemi Ne Zaman Kullanmalıyım?

Kriter Invoke-Command (WinRM) PsExec
Domain içi güvenli bağlantı ✅ (ama şifre açık girilir)
Güvenlik (Kerberos/NTLM) ⚠️
Script ile otomasyon
Hızlı ve doğrudan uygulama ⚠️
Kurulum gereksinimi WinRM açık olmalı PsExec sadece EXE dosyasıyla
Firewall uyumluluğu WinRM port 5985 SMB ve RPC (C$ paylaşımı)

Invoke-Command için

  • “Access denied” → Admin yetkisi veya WinRM yapılandırması eksik olabilir.
  • “Connection refused” → Firewall kontrol edilmeli.

PsExec için

  • “Access is denied” → C$ paylaşımı, admin yetkisi, veya antivirüs kontrol edilmeli.
  • PsExec komutları mutlaka yönetici olarak çalıştırılmalı.

Domain ortamında uzaktaki sunucular üzerinde servis başlatmak, durdurmak veya yeniden başlatmak için hem Invoke-Command hem de PsExec kullanımı mümkündür. Eğer WinRM ortamınız hazırsa ve merkezi yönetim istiyorsanız PowerShell Invoke-Command önerilir. Ancak hızlı bir çözüm arıyorsanız ya da WinRM devre dışıysa PsExec güçlü bir alternatiftir.

İhtiyacınıza göre her iki yöntemi de betiklerle otomatik hale getirebilir, yüzlerce sunucuyu saniyeler içinde yönetebilirsiniz.

PsExec kullanımı güvenli mi?

Evet, Microsoft tarafından geliştirilmiştir ancak şifre açık girildiği için dikkatli olunmalıdır.

PsExec mi Invoke-Command mı daha hızlı?

PsExec daha hızlıdır ama güvenlik açısından PowerShell remoting tercih edilmelidir.

PowerShell ile PsExec birleştirilebilir mi?

Evet, PowerShell içinden Start-Process ile PsExec komutlarını çalıştırabilirsiniz.

Bu yazımda sizlere domain ortamında uzak sunucularda PsExec ve Invoke-Command ile servis başlatma konusundan bahsettim. Faydalı olması dileğiyle.


 

#Powershell#IT#Teknoloji#Rehber

Bu makaleyi paylaş:

Etiketlere Göre İlgili Makaleler

Yorumlar

0 yorum

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yaz

0/500