Birden çok uzak bilgisayarda PowerShell scripti nasıl çalıştırılır?
Kendi bilgisayarınızda çalışan bir scriptiniz var. Şimdi 20 bilgisayarda daha çalışması gerekiyor. İşte en yaygın dört yöntem, her birinin neye ihtiyaç duyduğu ve nerede tıkandığı.
Kısa cevap: tek bir ofis ağında ve domain ortamında Invoke-Command (PowerShell Remoting) Windows'ta hazır gelir ve ücretsizdir. Bilgisayarlar farklı ağlarda, evde veya NAT arkasında olduğunda, buluttaki bir panele dışarı doğru bağlanan bir ajan, VPN ve port açmadan çalışmaya devam eden seçenektir.
1. Invoke-Command ile PowerShell Remoting (WinRM)
PowerShell Remoting Windows'un bir parçasıdır. Her hedef bilgisayarda bir kez etkinleştirirsiniz, ardından kendi bilgisayarınızdan bir script bloğunu birçok makinede paralel çalıştırırsınız:
# Her hedef bilgisayarda bir kez, yönetici PowerShell'de
Enable-PSRemoting -Force
# Yönetici bilgisayarınızdan
Invoke-Command -ComputerName PC-01, PC-02, PC-03 -ScriptBlock {
Get-Service Spooler | Select-Object Status, Name
}
Blok yerine bir script dosyası çalıştırmak için -FilePath C:\Scripts\cleanup.ps1 kullanın. Sonuçlar, her biri PSComputerName ile etiketlenmiş nesneler olarak döner.
Gereksinimler
- Her hedefte WinRM servisi çalışmalı ve güvenlik duvarı TCP 5985 (HTTP) veya 5986 (HTTPS) portuna izin vermeli.
- Bilgisayarınızdan hedeflere ağ erişimi — aynı yerel ağ veya VPN.
- Active Directory domain'inde kimlik doğrulamayı Kerberos yapar. Workgroup'ta bilgisayarları kendi makinenizde
TrustedHostslistesine eklemeli ve-Credentialile kimlik bilgisi vermelisiniz. - Bir ağ bağdaştırıcısı Genel (Public) profildeyken
Enable-PSRemotinggüvenlik duvarını yapılandırmayı reddeder; dizüstülerde bu sık görülür.
Nerede tıkanır: evdeki dizüstüler, VPN'i olmayan şubeler, domain'de olmayan bilgisayarlar.
2. PsExec
Microsoft Sysinternals'ın PsExec aracı, SMB üzerinden uzak bilgisayarda bir işlem başlatır:
psexec \\PC-01 -s powershell -NoProfile -Command "Get-Volume"
- SMB (TCP 445) ve
ADMIN$paylaşımına erişim ile hedefte yönetici hesabı gerekir. - Yerel ağda tek seferlik işler için pratiktir; ancak saldırganlar da aynı tekniği kullandığından birçok antivirüs ve EDR ürünü onu işaretler veya engeller.
- Her komut tek bilgisayarda çalışır; bir listede döngü kurmak size kalır.
3. Uzak masaüstü, bilgisayar bilgisayar
RDP, TeamViewer, AnyDesk veya benzeriyle bağlanın, PowerShell'i açın, scripti yapıştırın. Tek makine için olur. 20 makine için bir öğleden sonranızı alır, kullanıcıyı böler ve neyin nerede çalıştığının kaydı tutulmaz.
4. Her bilgisayarda bir ajan (RMM)
Her bilgisayardaki küçük bir servis, merkezi bir panele dışarı doğru sürekli bağlı kalır. Bağlantıyı bilgisayar başlattığı için açılacak gelen port ve bakımı yapılacak VPN yoktur; ofiste, evde veya otel Wi-Fi'ında aynı şekilde çalışır. CtrlSoft dahil RMM (uzaktan izleme ve yönetim) araçları böyle çalışır.
CtrlSoft ile script çalıştırma
- Ajanı her bilgisayara kurun — elle ya da tek komutla çok sayıda bilgisayara sessizce.
- Scripts bölümünü açın, PowerShell veya CMD scriptinizi bir kez kaydedin.
- Bir cihazda hemen çalıştırın ya da tek cihaz veya tüm grup için bir zamanlama oluşturun.
- Her çalışmanın çıktısını ve çıkış kodunu scriptin geçmişinde görün. Hızlı tek seferlik komutlar için cihaz sayfasındaki komut konsolunu kullanın.
$env:USERPROFILE veya HKCU: yerine $env:ProgramData ya da HKLM: gibi makine genelindeki yolları kullanın.Karşılaştırma
| Yöntem | Gereksinim | Ofis ağı dışında | Aynı anda çok bilgisayar |
|---|---|---|---|
| Invoke-Command | WinRM, 5985/5986 portları, domain veya TrustedHosts | Sadece VPN ile | Evet |
| PsExec | SMB 445, ADMIN$ paylaşımı, yönetici hesabı | Sadece VPN ile | Kendi döngünüzle |
| Uzak masaüstü | Uzak masaüstü aracı ve kullanıcının zamanı | Araca bağlı | Hayır |
| Ajan / RMM | Bir kez kurulan ajan, dışarı doğru HTTPS | Evet | Evet, çıktı geçmişiyle |
Geri almaktan kurtaran ipuçları
- Scripti önce tek bir test bilgisayarında, sonra diğerlerinde çalıştırın.
- Scriptleri iki kez çalışsa da sorun çıkarmayacak şekilde yazın: değiştirmeden önce kontrol edin (
if (-not (Test-Path ...))). - Net bir çıkış kodu döndürün — hata durumunda
exit 1— böylece çalışma sessizce başarılı görünmek yerine başarısız olarak işaretlenir. - Uzun süren işleri kısa tutun veya bölün; uzak oturumların ve ajanların genellikle bir zaman aşımı vardır.
Kendi bilgisayarlarınızda deneyin
5 cihaza kadar 30 gün ücretsiz. Kart yok, sunucu yok, VPN yok.
30 gün ücretsiz deneyin