11.10.2022

Powershell'de yerel betik veya değişkenleri uzak betiklerde kullanmak

Diyelim yerel bilgisayarda bir değişkenimiz var:

$yol = "D:\logs"

Normal şartlar altında yerel bilgisayarda tanımlanan değişkenlerin kapsamları yerel bilgisayardaki betik ortamında kalır. Uzaktaki bilgisayarda çalıştırılan aşağıdaki gibi bir kod hata vermese de beklenen çıktıyı üretmez:

$ Invoke-Command -Computername UZAKPC -ScriptBlock { Get-ChildItem -Path $yol }

Yerel değikenin kapsamıını uzaktaki bilgisayarı da içine alacak şekilde genişletmek için şu iki yöntemden birini kullanabiliriz:

$ Invoke-Command -Computername UZAKPC -ScriptBlock { Get-ChildItem -Path $Using:yol } 

$ Invoke-Command -Computername UZAKPC -ScriptBlock { Get-ChildItem -Path $yol } -ArgumentList $yol

Değişkene ilave olarak yerel bilgisayarda oluşturduğumuz yerelfonksiyon() gibi bir fonksiyon varsa ve bunu uzak bilgisayarda çalıştırmak istiyorsak bu durumda da aşağıdaki gibi yol izleyebiliriz:

$ Invoke-Command -Computername UZAKPC -ScriptBlock { $Function:yerelfonksiyon } 

Alternatif yöntem olarak ArgumentList parametresini de kullanabiliriz:

$ Invoke-Command -Computername UZAKPC -ScriptBlock { yerelfonksiyon } -ArgumentList -${function:yerelfonksiyon}

Benzer şekilde bu fonksiyona parametre olarak yine yerel bilgisayarda tanımlanmış değişkenler göndereceksek

$ Invoke-Command -Computername UZAKPC -ScriptBlock { yerelfonksiyon $deger1 $deger2} -ArgumentList ${function:yerelfonksiyon},$deger1,$deger2

---

https://stackoverflow.com/questions/30304366/powershell-passing-function-to-remote-command

Hiç yorum yok: