Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
Uzak komutlarda yerel ve uzak değişkenlerin nasıl kullanılacağını açıklar.
Uzun açıklama
Uzak bilgisayarlarda çalıştırdığınız komutlarda değişkenleri kullanabilirsiniz. Değişkene bir değer atayın ve değerin yerine değişkenini kullanın.
Varsayılan olarak, uzak komutlardaki değişkenlerin komutu çalıştıran oturumda tanımlandığı varsayılır. Yerel oturumda tanımlanan değişkenler, komutta yerel değişkenler olarak tanımlanmalıdır.
Uzak değişkenleri kullanma
PowerShell, uzak komutlarda kullanılan değişkenlerin komutun çalıştığı oturumda tanımlandığını varsayar.
Bu örnekte değişkeni, komutun $ps çalıştığı geçici oturumda Get-WinEvent tanımlanır.
Invoke-Command -ComputerName S1 -ScriptBlock {
$ps = "*PowerShell*"; Get-WinEvent -LogName $ps
}
Komut kalıcı bir oturumda (PSSession) çalıştığında, uzak değişkenin bu oturumda tanımlanması gerekir.
$s = New-PSSession -ComputerName S1
Invoke-Command -Session $s -ScriptBlock {$ps = "*PowerShell*"}
Invoke-Command -Session $s -ScriptBlock {Get-WinEvent -LogName $ps}
Yerel değişkenleri kullanma
Uzak komutlarda yerel değişkenleri kullanabilirsiniz, ancak değişkenin yerel oturumda tanımlanması gerekir.
PowerShell 3.0'da başlayarak, uzak komuttaki Using: yerel bir değişkeni tanımlamak için kapsam değiştiricisini kullanabilirsiniz.
söz dizimi Using: aşağıdaki gibidir:
$Using:<VariableName>
Aşağıdaki örnekte, $ps değişken yerel oturumda oluşturulur, ancak komutun çalıştığı oturumda kullanılır. Kapsam Using: değiştiricisi yerel değişken olarak tanımlar $ps .
$ps = "*PowerShell*"
Invoke-Command -ComputerName S1 -ScriptBlock {
Get-WinEvent -LogName $Using:ps
}
Kapsam Using: değiştirici bir PSSession'da kullanılabilir.
$s = New-PSSession -ComputerName S1
$ps = "*PowerShell*"
Invoke-Command -Session $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}
Gibi $Using:var bir değişken başvurusu, çağıranın bağlamından değişkenin $var değerine genişletir. Çağıranın değişken nesnesine erişemezseniz. Kapsam Using: değiştirici, PSSession içindeki bir yerel değişkeni değiştirmek için kullanılamaz. Örneğin, aşağıdaki kod çalışmaz:
$s = New-PSSession -ComputerName S1
$ps = "*PowerShell*"
Invoke-Command -Session $s -ScriptBlock {$Using:ps = 'Cannot assign new value'}
hakkında Using:daha fazla bilgi için bkz. about_Scopes
Sıçramayı kullanma
PowerShell splatting komutuna parametre adları ve değerleri koleksiyonunu geçirir. Daha fazla bilgi için bkz . about_Splatting.
Bu örnekte, splatting değişkeni, $Splat yerel bilgisayarda ayarlanmış bir karma tablodur. uzak Invoke-Command bilgisayar oturumuna bağlanır. ScriptBlockat (Using:) simgesine sahip kapsam değiştiricisini kullanarak sıçramış değişkeni gösterir.
$Splat = @{ Name = "Win*"; Include = "WinRM" }
Invoke-Command -Session $s -ScriptBlock { Get-Service @Using:Splat }
Using: kapsam değiştiricisinin gerekli olduğu diğer durumlar
Oturum dışında yürütülen herhangi bir betik veya komut için, çağıran oturum kapsamından Using: değişken değerleri eklemek için kapsam değiştiricisine ihtiyacınız vardır; böylece oturum dışı kod bunlara erişebilir. Kapsam Using: değiştirici aşağıdaki bağlamlarda desteklenir:
- ComputerName, HostName
Invoke-CommandSSHConnection veya Session parametreleri (uzak oturum) kullanılarak başlatılan uzaktan yürütülen komutlar - Ile başlatılan
Start-Jobarka plan işleri (işlem dışı oturum) - veya
Start-ThreadJobaracılığıylaForEach-Object -Parallelbaşlatılan iş parçacığı işleri (ayrı iş parçacığı oturumu)
Bağlama bağlı olarak, katıştırılmış değişken değerleri, çağıranın kapsamındaki verilerin bağımsız kopyaları veya buna yapılan başvurulardır. Uzak ve işlem dışı oturumlarda bunlar her zaman bağımsız kopyalardır. İş parçacığı oturumlarında bunlar başvuruyla geçirilir.
Değişken değerlerini serileştirme
Uzaktan yürütülen komutlar ve arka plan işleri işlem dışıdır. İşlem dışı oturumlarda, değişkenlerin değerlerini işlem sınırları boyunca kullanılabilir hale getirmek için XML tabanlı serileştirme ve seri durumdan çıkarma kullanılır. Serileştirme işlemi, nesneleri özgün nesne özelliklerini içeren ancak yöntemlerini içermeyen bir PSObject'e dönüştürür.
Sınırlı bir tür kümesi için seri durumdan çıkarma, nesneleri özgün türe geri döndürür. Yeniden doldurulan nesne, özgün nesne örneğinin bir kopyasıdır. Tür özelliklerine ve yöntemlerine sahiptir. System.Version gibi basit türler için kopya tamdır. Karmaşık türler için kopya kusurludur. Örneğin, yeniden doldurulan sertifika nesneleri özel anahtarı içermez.
Diğer tüm türlerin örnekleri PSObject örnekleridir. pstypenames özelliği, Seri Durumdan Çıkarılmışön ekli özgün tür adını içerir; örneğin, Deserialized.System.Data.DataTable
ArgumentList parametresiyle yerel değişkenleri kullanma
Uzak komut için parametreler tanımlayarak ve parametre değeri olarak yerel değişkeni belirtmek için cmdlet'in ArgumentListInvoke-Commanduzak komutta yerel değişkenleri kullanabilirsiniz.
Uzak komutun
paramparametrelerini tanımlamak için anahtar sözcüğünü kullanın. Parametre adları, yerel değişkenin adıyla eşleşmesi gerekmeyen yer tutuculardır.komutunda anahtar sözcüğü tarafından
paramtanımlanan parametreleri kullanın.parametresini kullanın.
Örneğin, aşağıdaki komutlar değişkeni yerel oturumda tanımlar $ps ve ardından uzak bir komutta kullanır. komutu parametre adı olarak ve yerel değişkeni $Logolarak değerini kullanır$ps.
$ps = "*PowerShell*"
Invoke-Command -ComputerName S1 -ScriptBlock {
param($Log)
Get-WinEvent -LogName $Log
} -ArgumentList $ps
Ayrıca bakınız
PowerShell