Powershell ile uzak sunucuda cmd komutu çalıştırma
Powershell ile uzak sunucuda cmd komutu çalıştırma. Geçen bir uygulama üzerinde çalışırken böyle birşeye ihtiyaç duydum. Uygulama içerisine yazılmış betikleri powershell den çalıştıramıyordum. Bunun üzerine Powershell üzerinden cmd çalıştırma ihtiyacı hissettim ve bunu uzak sunucuda yapmalıydım. Sonuç itibariyle aşağıda paylaştığım komut ile uzak sunucuda powershell ile cmd çalıştırabilirsiniz.
Invoke command ile uzak sunucuda çalışacağımı belirtiyorum.
Uzak sunucuda cmd üzerinde yapacağım örnek işlem systeminfo çıktısını c:\test altına info.txt adıyla atsın ve bu komutu myserver isimli uzak sunucumda çalıştıracağım diyorum.
Powershell ile uzak sunucuda cmd komutu çalıştırma
Powershell ile uzak sunucularda cmd komutu çalıştırmak için aşağıdaki kodu kullanıyoruz.
1 2 3 4 5 6 |
Invoke-Command -ScriptBlock { cmd.exe /c systeminfo >> C:\Test\info.txt } -ComputerName Myserver |
Eğer birden fazla sunucu üzerinde aynı anda cmd komutu girmeniz gerekiyorsa, bir variable oluşturup computernameleri bu variable içine yazıyoruz. Komutumuz aşağıdaki gibi olacak;
1 2 3 4 5 6 7 8 |
$computerlist = "srvnode1","srvnode2" Invoke-Command -ScriptBlock { cmd.exe /c systeminfo >> C:\ipinfo.txt } -ComputerName $computerlist |
Yukarıdaki kodu açıklamak gerekirse.
Invoke-command -scriptblock {} –> Bu komut ile block içerisindeki kodu uzak bir sunucuda çalıştıracağımızı belirtiyoruz.
cmd.exe /c systeminfo >> C:\Test\info.txt –> Bu komut ile cmd içerisinde systeminfo komutunu çalıştıracağımız ve çıkan sonucu c:\test\info.txt dosyasına yazdıracağımı söylüyorum. Böyle bir dosya yoksa no problem cmd kendi bu dosyayı yaratacaktır.
–ComputerName Myserver –> -Computername parametresi verip uzak sunucu adımızı giriyoruz.