April 26, 2024
powershell

Powershell Invoke-Command Nedir ve Nasıl Kullanılır

Powershell Invoke-Command nedir ve nasıl kullanılır. Invoke-Command cmdlet’i kullanarak, yerel veya uzak bir bilgisayarda komutları çalıştırır ve hatalar da dahil olmak üzere komutların  çıktılarını döndürür. Tek bir Invoke-Command komutu ile onlarca hatta yüzlerce bilgisayarda komut çalıştırabilirsiniz.

Uzak bir bilgisayarda tek bir komut çalıştırmak için ComputerName parametresini kullanırız.

Uzak bir bilgisayarda tek bir komut çalıştırmak yerine bir script çalıştırmak istersek aşağıdaki komutu kullanırız.

 

İstersek PsSession açarak invoke command çalıştırabiliriz bunun için aşağıdaki komutu kullanırız.

 

Bir arka plan işinde komut çalıştırmak için AsJob parametresini kullanıyoruz.

Job create ettikten sonra

Get-Job diyerek hangi jobların çalıştığını görebilir.

Receive-Job diyerek çalışan jobları çekebilirsiniz.

Invoke-Command ve Foreach döngüsü

Benim bu makalede üzerine basmak istediğim konu ise Invoke-command’in nasıl çalıştığından ziyade Invoke-Command’in kendisi ile foreach komutu çalıştırarak aradaki farkı görmek ve göstermek.

Aşağıdaki iki komutda özü itibariyle aynı. Her iki komutta uzak sunucularda. Bu uzak sunucuları ben bir txt dosyasından çekmeyi tercih ettim. “D” ile başlayan servisleri çeker.

Fakat burada basit ama etkili bir ayrım var. Bildiğiniz üzere foreach döngüsü döngü içerisindeki her komutu tek tek çalıştırır. İşin güzel tarafı sonuçları da her bir kayıt için ayrı ayrı döndürür.

Aşağıdaki resimde gördüğünüz üzere ben bu komutun çıktılarını measure-command ile ölçtüğümde Invoke-command tek başına toplam sonucu döndürürken. Foreach ile çalıştırdığımda her bir sonucu bana ayrı ayrı döküyor. Bu altkırılım istediğimde benim için harika bir özellik.

Powershell invoke-command
Powershell invoke-command

Bir yanıt yazın