Hakkında_Scopes

Kısa açıklama

PowerShell'de kapsam kavramını açıklar ve öğelerin kapsamını ayarlamayı ve değiştirmeyi gösterir.

Uzun açıklama

PowerShell, okunabilecekleri ve değiştirilebileceği yerleri sınırlayarak değişkenlere, diğer adlara, işlevlere ve PowerShell sürücülerine (PSDrive) erişimi korur. PowerShell, değiştirilmemesi gereken bir öğeyi yanlışlıkla değiştirmemenizi sağlamak için kapsam kurallarını kullanır.

Temel kapsam kuralları şunlardır:

  • Kapsamlar iç içe geçebilir. Dış kapsam, üst kapsam olarak adlandırılır. İç içe yerleştirilmiş kapsamlar, o ana ait alt kapsamlardır.

  • Bir öğe, siz açıkça özel yapmadığınız sürece, oluşturulduğu kapsamda ve tüm alt kapsamlarda görünür.

  • Geçerli kapsamın dışındaki bir kapsamda değişkenleri, diğer adları, işlevleri ve PowerShell sürücülerini bildirebilirsiniz.

  • Kapsam içinde oluşturduğunuz bir öğe, açıkça farklı bir kapsam belirtmediğiniz sürece yalnızca oluşturulduğu kapsamda değiştirilebilir.

Kapsamda bir öğe oluşturursanız ve öğe adını farklı bir kapsamdaki bir öğeyle paylaşırsa, özgün öğe yeni öğenin altında gizlenebilir, ancak geçersiz kılınmaz veya değiştirilmez.

PowerShell Kapsamları

PowerShell aşağıdaki kapsamları destekler:

  • Genel: PowerShell başlatıldığında veya yeni bir oturum ya da çalışma alanı oluşturduğunuzda geçerli olan kapsam. PowerShell başlatıldığında mevcut olan değişkenler ve işlevler, otomatik değişkenler ve tercih değişkenleri gibi genel kapsamda oluşturulmuştur. PowerShell profillerinizdeki değişkenler, diğer adlar ve işlevler de genel kapsamda oluşturulur. Genel kapsam, bir oturumdaki kök üst kapsamdır.

  • Yerel: Geçerli kapsam. Yerel kapsam genel kapsam veya başka bir kapsam olabilir.

  • Komut Dosyası: Bir komut dosyası çalışırken oluşturulan kapsam. Yalnızca komut dosyasındaki komutlar komut dosyası kapsamında çalışır. Bir komut dosyasındaki komutlar için, komut dosyası kapsamı yerel kapsamdır.

Uyarı

Özel bir kapsam değildir. Öğenin tanımlandığı kapsamın dışındaki bir öğenin görünürlüğünü değiştiren bir seçenektir .

Üst ve Alt Kapsamlar

Yeni bir alt kapsam oluşturmak için bir betik veya fonksiyon çağırabilirsiniz. Çağrı kapsamı ana kapsama aittir. Çağrılan betik veya işlev, alt kapsamdır. Çağırdığınız işlevler veya betikler, kök kapsamı genel kapsam olan alt kapsamların hiyerarşisini oluşturarak diğer işlevleri çağırabilir.

Öğeleri açıkça özel hale getirmediğiniz sürece, üst kapsamdaki öğeler alt kapsamda kullanılabilir. Ancak, alt kapsamda oluşturduğunuz ve değiştirdiğiniz öğeler, öğeleri oluştururken kapsamı açıkça belirtmediğiniz sürece üst kapsamı etkilemez.

Uyarı

Bir modülden gelen işlevler, çağıran kapsamın alt kapsamında çalışmaz. Modüllerin genel kapsama bağlı kendi oturum durumları vardır. Tüm modül kodu, kendi kök kapsamına sahip olan modüle özgü bir kapsam hiyerarşisinde çalışır.

Miras

Alt kapsam, değişkenleri, diğer adları ve işlevleri üst kapsamdan devralmaz. Bir öğe özel olmadığı sürece, alt kapsam üst kapsamdaki öğeleri görüntüleyebilir. Ayrıca, üst kapsamı açıkça belirterek öğeleri değiştirebilir, ancak öğeler alt kapsamın bir parçası değildir.

Ancak, bir dizi öğeyle bir alt kapsam oluşturulur. Genellikle, AllScope seçeneğine sahip tüm diğer adları içerir. Bu seçenek bu makalenin devamında ele alınmalıdır. AllScope seçeneğine sahip tüm değişkenleri ve bazı otomatik değişkenleri içerir.

Belirli bir kapsamdaki öğeleri bulmak için Get-Variable veya Get-AliasScope parametresini kullanın.

Örneğin, yerel kapsamdaki tüm değişkenleri almak için şunu yazın:

Get-Variable -Scope local

Genel kapsamdaki tüm değişkenleri almak için şunu yazın:

Get-Variable -Scope global

Kapsam Değiştiriciler

Değişken, diğer ad veya işlev adı, aşağıdaki isteğe bağlı kapsam değiştiricilerinden herhangi birini içerebilir:

  • global: - Adın Genel kapsamında mevcut olduğunu belirtir.

  • local: - Adın Yerel kapsamında mevcut olduğunu belirtir. Geçerli kapsam her zaman Yerel kapsamıdır.

  • private: - Özel adın yalnızca geçerli kapsamda görünür olduğunu belirtir.

  • script: - Adın Betik kapsamında mevcut olduğunu belirtir. Betik kapsamı, en yakın üst betik dosyasının kapsamı ya da yakın üst betik dosyası yoksa Genel olur.

  • using:- Komut dosyalarını ve Start-Jobgibi cmdlet'ler aracılığıyla çalıştırırken başka bir kapsamda tanımlanan değişkenlere Invoke-Command erişmek için kullanılır.

  • workflow: - Adın bir iş akışı içinde var olduğunu belirtir. Not: PowerShell v6 ve üzeri sürümlerde iş akışları desteklenmez.

  • <variable-namespace> - PowerShell PSDrive sağlayıcısı tarafından oluşturulan bir değiştirici. Örneğin:

    Namespace Açıklama
    Alias: Geçerli kapsamda tanımlanan takma adlar
    Env: Geçerli kapsamda tanımlanan ortam değişkenleri
    Function: Geçerli kapsamda tanımlanan işlevler
    Variable: Geçerli kapsamda tanımlanan değişkenler

Betiklerin varsayılan kapsamı betik kapsamıdır. İşlevler ve diğer adlar için varsayılan kapsam, bir komut dosyasında tanımlanmış olsalar bile yerel kapsamdır.

Kapsam değiştiricileri kullanma

Yeni bir değişkenin, diğer adın veya işlevin kapsamını belirtmek için kapsam değiştirici kullanın.

Bir değişkendeki kapsam değiştiricinin söz dizimi şöyledir:

$[<scope-modifier>:]<name> = <value>

bir işlevdeki kapsam değiştiricinin söz dizimi şöyledir:

function [<scope-modifier>:]<name> {<function-body>}

Kapsam değiştiricisi kullanmayan aşağıdaki komut, geçerli veya yerel kapsamda bir değişken oluşturur:

$a = "one"

genel kapsamında aynı değişkeni oluşturmak için kapsam global: değiştiricisini kullanın:

$global:a = "one"

betik kapsamında aynı değişkeni oluşturmak için script: kapsam değiştiricisini kullanın:

$script:a = "one"

İşlevlerle bir kapsam değiştirici de kullanabilirsiniz. Aşağıdaki işlev tanımı, genel kapsamında bir işlev oluşturur:

function global:Hello {
  Write-Host "Hello, World"
}

Farklı bir kapsamdaki bir değişkene başvurmak için kapsam değiştiricileri de kullanabilirsiniz. Aşağıdaki komut, önce yerel kapsamda ve ardından genel kapsamda $test değişkenine başvurur:

$test
$global:test

Using: kapsam değiştiricisi

kullanma, uzak bir komuttaki yerel değişkeni tanımlayan özel bir kapsam değiştiricidir. Değiştirici olmadan, PowerShell uzak komutlardaki değişkenlerin uzak oturumda tanımlanmasını bekler.

Using kapsam değiştiricisi PowerShell 3.0'da kullanıma sunulmuştur.

Oturum dışında yürütülen herhangi bir betik veya komut için, çağıran oturum kapsamından değişken değerleri eklemek için Using kapsam değiştiricisine ihtiyacınız vardır; böylece oturum dışı kod bunlara erişebilir. Using kapsam değiştiricisi aşağıdaki bağlamlarda desteklenir:

  • Invoke-Command, HostName, SSHConnection veya Oturumu parametreleri (uzak oturum) kullanılarak ile başlatılan uzaktan yürütülen komutlar
  • Start-Job ile başlatılan arka plan işleri (işlem dışı oturum)
  • Start-ThreadJob veya ForEach-Object -Parallel aracılığıyla başlatılan iş parçacığı (ayrı oturumda)

Kontekste bağlı olarak, gömülü değişken değerleri, çağıranın kapsamındaki verilerin bağımsız kopyaları veya bunlara yapılan referanslar olabilir. Uzak ve işlem dışı oturumlarda bunlar her zaman bağımsız kopyalardır.

Daha fazla bilgi için bkz. about_Remote_Variables.

İş parçacığı oturumlarında bunlar referansla geçirilir. Bu, çağrı kapsamı değişkenlerini farklı bir iş parçacığında değiştirmenin mümkün olduğu anlamına gelir. Değişkenleri güvenli bir şekilde değiştirmek için iş parçacığı senkronizasyonu gerekir.

Daha fazla bilgi için bkz.:

  • Start-ThreadJob
  • ForEach-Object

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 dönüştürür.

Sınırlı sayıda tür 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.Versiongibi basit türler için kopya birebir olur. Karmaşık türler için kopya kusurludur. Örneğin, yeniden oluşturulan sertifika nesneleri özel anahtarı içermez.

Diğer tüm türlerin örnekleri PSObject örnekleridir. PSTypeNames özelliği, Serileştirilmemişön ekli özgün tür adını içerir; örneğin, Deserialized.System.Data.DataTable

AllScope Seçeneği

Değişkenler ve takma adlar, AllScopedeğerini alabilen bir Option özelliğine sahiptir. AllScope özelliğine sahip öğeler, üst kapsamlar tarafından geriye dönük olarak devralınmasalar da, oluşturduğunuz tüm alt kapsamların bir parçası haline gelir.

AllScope özelliğine sahip bir öğe alt kapsamda görünür durumdadır ve bu kapsamın bir parçasıdır. Herhangi bir kapsamdaki öğede yapılan değişiklikler, değişkenin tanımlandığı tüm kapsamları etkiler.

Kapsam Yönetimi

Bazı cmdlet'lerde belirli bir kapsamdaki öğeleri almanıza veya ayarlamanıza (oluşturma ve değiştirme) olanak tanıyan bir Kapsam parametresi vardır. Oturumunuzda Kapsamı parametresi olan tüm cmdlet'leri bulmak için aşağıdaki komutu kullanın:

Get-Help * -Parameter scope

Belirli bir kapsamda görünen değişkenleri bulmak için ScopeGet-Variable parametresini kullanın. Görünür değişkenler genel değişkenleri, üst kapsamdaki değişkenleri ve geçerli kapsamdaki değişkenleri içerir.

Örneğin, aşağıdaki komut yerel kapsamda görünen değişkenleri alır:

Get-Variable -Scope local

Belirli bir kapsamda değişken oluşturmak için bir kapsam değiştirici veya Set-Variable parametresini kullanın. Aşağıdaki komut genel kapsamda bir değişken oluşturur:

New-Variable -Scope global -Name a -Value "One"

Kapsamı belirtmek için New-Alias, Set-Aliasveya Get-Alias cmdlet'lerinin Scope parametresini de kullanabilirsiniz. Aşağıdaki komut genel kapsamda bir diğer ad oluşturur:

New-Alias -Scope global -Name np -Value Notepad.exe

Belirli bir kapsamdaki işlevleri almak için, kapsam içindeyken Get-Item cmdlet'ini kullanın. Cmdlet'in Get-Item bir Scope parametresi yok.

Uyarı

Kapsamı parametresini kullanan cmdlet'ler için, sayıya göre kapsamlara da başvurabilirsiniz. Sayı, bir kapsamın diğerinin göreli konumunu açıklar. Kapsam 0 geçerli veya yerel kapsamı temsil eder. Kapsam 1, doğrudan üst kapsamı gösterir. Kapsam 2, kapsama alanının üstündeki ana kapsamı gösterir ve benzeri şekilde devam eder. Çok sayıda özyinelemeli kapsam oluşturduysanız, numaralandırılmış kapsamlar kullanışlıdır.

Kapsam ile Nokta Kaynak Gösterimini Kullanma

Komut dosyaları ve işlevler tüm kapsam kurallarına uyar. Bunları belirli bir kapsamda oluşturursunuz ve bu kapsamı değiştirmek için bir cmdlet parametresi veya kapsam değiştirici kullanmadığınız sürece yalnızca bu kapsamı etkiler.

Ancak, nokta kaynak gösterimini kullanarak geçerli kapsama bir komut dosyası veya işlev ekleyebilirsiniz. Daha sonra, bir komut dosyası geçerli kapsamda çalıştığında, komut dosyasının oluşturduğu tüm işlevler, diğer adlar ve değişkenler geçerli kapsamda kullanılabilir.

Geçerli kapsama bir işlev eklemek için, işlev çağrısında işlevin yolundan ve adından önce bir nokta (.) ve bir boşluk yazın.

Örneğin, Sample.ps1 komut dosyasını komut dosyası kapsamındaki C:\Scripts dizininden (komut dosyaları için varsayılan) çalıştırmak için aşağıdaki komutu kullanın:

c:\scripts\sample.ps1

Sample.ps1 betiğini yerel kapsamda çalıştırmak için aşağıdaki komutu kullanın:

. c:\scripts.sample.ps1

Bir işlevi veya komut dosyasını çalıştırmak için çağrı işlecini (&) kullandığınızda, bu işlev veya komut dosyası geçerli kapsama eklenmez. Aşağıdaki örnekte çağrı operatörü kullanılır:

& c:\scripts.sample.ps1

Çağrı operatörü hakkında daha fazla bilgiyi about_operators okuyabilirsiniz.

Sample.ps1 betiğinin oluşturduğu diğer adlar, işlevler veya değişkenler geçerli kapsamda kullanılamaz.

Kapsam Olmadan Kısıtlama

Birkaç PowerShell kavramı kapsama benzer veya kapsamla etkileşim kurar. Bu kavramlar kapsam veya kapsamın davranışı ile karıştırılabilir.

Oturumlar, modüller ve iç içe istemler bağımsız ortamlardır, ancak oturumdaki genel kapsamın alt kapsamları değildir.

Oturumlar

Oturum, PowerShell'in çalıştığı bir ortamdır. Uzak bilgisayarda oturum oluşturduğunuzda, PowerShell uzak bilgisayara kalıcı bir bağlantı kurar. Kalıcı bağlantı, oturumu birden çok ilgili komut için kullanmanıza olanak tanır.

Bir oturum kapsanan bir ortam olduğundan, kendi kapsamına sahiptir, ancak bir oturum, oluşturulduğu oturumun alt kapsamı değildir. Oturum kendi genel kapsamıyla başlar. Bu kapsam oturumun genel kapsamından bağımsızdır. Oturumda alt kapsamlar oluşturabilirsiniz. Örneğin, bir oturumda alt kapsam oluşturmak için bir komut dosyası çalıştırabilirsiniz.

Modül

PowerShell araçlarını paylaşmak ve teslim etmek için bir PowerShell modülü kullanabilirsiniz. Modül cmdlet'leri, betikleri, işlevleri, değişkenleri, diğer adları ve diğer yararlı öğeleri içerebilen bir birimdir. Açıkça tanımlanmadıkça, bir modüldeki öğelere modülün dışından erişilemez. Bu nedenle, modülü oturumunuza ekleyebilir ve diğer öğelerin oturumunuzda cmdlet'leri, betikleri, işlevleri ve diğer öğeleri geçersiz kılabileceği konusunda endişelenmeden genel öğeleri kullanabilirsiniz.

Varsayılan olarak, modüller geçerli kapsama değil, geçerli oturum durumunun en üst düzeyine yüklenir. Geçerli oturum durumu bir modül oturum durumu veya genel oturum durumu olabilir. Oturuma modül eklemek kapsamı değiştirmez. Genel kapsamdaysanız, modüller genel oturum durumuna yüklenir. Tüm dışa aktarma işlemleri genel tablolara yerleştirilir. Modül2'yi modül1'in içinden yüklerseniz, modül2 genel oturum durumuna değil, modül1'in oturum durumuna yüklenir. Modül2'den yapılan tüm dışa aktarmalar, modül1 oturum durumunun en üstüne yerleştirilir. Import-Module -Scope localkullanırsanız dışa aktarmalar üst düzey yerine geçerli kapsam nesnesine yerleştirilir. Bir modüldeyseniz ve başka bir modülü yüklemek için (veya Import-Module -Scope global) kullanıyorsanız Import-Module -Global , bu modül ve dışa aktarmaları modülün yerel oturum durumu yerine genel oturum durumuna yüklenir. Bu özellik, modülleri manipüle eden modül yazmak için tasarlanmıştır. WindowsCompatibility modülü, proxy modüllerini genel oturum durumuna aktarmak için bunu yapar.

Oturum durumu içinde modüllerin kendi kapsamları vardır. aşağıdaki modülü C:\temp\mod1.psm1göz önünde bulundurun:

$a = "Hello"

function foo {
    "`$a = $a"
    "`$global:a = $global:a"
}

Şimdi $abir genel değişken oluşturuyoruz, buna bir değer veriyoruz ve fooişlevini çağırıyoruz.

$a = "Goodbye"
foo

Modül, modül kapsamındaki değişken $a bildirir ve ardından foo işlevi değişkenin değerini her iki kapsamda da verir.

$a = Hello
$global:a = Goodbye

İç İçe İstemler

İç içe geçmiş istemlerin kendi kapsamları yoktur. İç içe bir istem girdiğinizde, iç içe istem ortamın bir alt kümesidir. Ancak, yerel kapsam içinde kalırsınız.

Betiklerin kendi kapsamları vardır. Bir betikte hata ayıklarsanız ve betikte bir kesme noktasına ulaşırsanız, betik kapsamını girersiniz.

Özel Seçenek

Diğer adlar ve değişkenler, Private değerini alabilen bir Option özelliğine sahiptir. Özel seçeneğine sahip öğeler, oluşturuldukları kapsamda görüntülenebilir ve değiştirilebilir, ancak bu kapsamın dışında görüntülenemez veya değiştirilemez.

Örneğin, genel kapsamda özel seçeneği olan bir değişken oluşturur ve sonra bir komut dosyası çalıştırırsanız, Get-Variable komut dosyasındaki komutlar özel değişkeni görüntülemez. Bu örnekte genel kapsam değiştiricisi kullanıldığında private değişkeni görüntülenmez.

Option özelliğinin değerini Özel olarak ayarlamak için , New-Variable, Set-Variableve New-Alias cmdlet'lerinin Option parametresini Set-Aliaskullanabilirsiniz.

Görünürlük

Bir değişkenin veya diğer adın Görünürlük özelliği, öğeyi oluşturulduğu kapsayıcının dışında görüp göremeyeceğiniz belirler. Kapsayıcı bir modül, betik veya ek bileşen olabilir. Görünürlük, Option özelliğinin Private değerinin kapsamlar için tasarlandığı şekilde kapsayıcılar için tasarlanmıştır.

Görünürlük özelliği, Genel ve Özel değerleri alır. Özel görünürlüğe sahip öğeler yalnızca oluşturuldukları kapsayıcıda görüntülenebilir ve değiştirilebilir. Kapsayıcı eklenir veya içe aktarılırsa, özel görünürlüğü olan öğeler görüntülenemez veya değiştirilemez.

Görünürlük kapsayıcılar için tasarlandığından, bir bağlamda farklı çalışır.

  • Genel kapsamda özel görünürlüğü olan bir öğe oluşturursanız, öğeyi herhangi bir kapsamda görüntüleyemez veya değiştiremezsiniz.
  • Özel görünürlüğü olan bir değişkenin değerini görüntülemeye veya değiştirmeye çalışırsanız PowerShell bir hata iletisi döndürür.

Özel görünürlüğe sahip bir değişken oluşturmak için New-Variable ve Set-Variable cmdlet'lerini kullanabilirsiniz.

Örnekler

Örnek 1: Yalnızca bir komut dosyasında bir değişken değerini değiştirme

Aşağıdaki komut, bir betikteki $ConfirmPreference değişkeninin değerini değiştirir. Değişiklik genel kapsamı etkilemez.

İlk olarak, yerel kapsamda $ConfirmPreference değişkeninin değerini görüntülemek için aşağıdaki komutu kullanın:

PS>  $ConfirmPreference
High

Aşağıdaki komutları içeren bir Scope.ps1 betiği oluşturun:

$ConfirmPreference = "Low"
"The value of `$ConfirmPreference is $ConfirmPreference."

Scripti çalıştırın. Betik, $ConfirmPreference değişkeninin değerini değiştirir ve ardından betik kapsamındaki değerini raporlar. Çıkış aşağıdaki çıkışa benzemelidir:

The value of $ConfirmPreference is Low.

Ardından, geçerli kapsamdaki $ConfirmPreference değişkeninin geçerli değerini test edin.

PS>  $ConfirmPreference
High

Bu örnek, kod kapsamındaki bir değişkenin değerinde yapılan değişikliklerin, değişkenin üst kapsamdaki değerini etkilemediğini gösterir.

Örnek 2: Farklı Kapsamlarda Bir Değişken Değerini Görüntüleme

Yerel kapsamda ve üst kapsamdaki bir değişkenin değerini görüntülemek için kapsam değiştiricilerini kullanabilirsiniz.

İlk olarak, genel kapsamda bir $test değişkeni tanımlayın.

$test = "Global"

Ardından, $test değişkenini tanımlayan bir Sample.ps1 betiği oluşturun. Betikte, $test değişkeninin genel veya yerel sürümlerine başvurmak için bir kapsam değiştirici kullanın.

Sample.ps1içinde:

$test = "Local"
"The local value of `$test is $test."
"The global value of `$test is $global:test."

Sample.ps1çalıştırdığınızda, çıkış aşağıdaki çıktıya benzemelidir:

The local value of $test is Local.
The global value of $test is Global.

Betik tamamlandığında oturumda yalnızca $test genel değeri tanımlanır.

PS>  $test
Global

Örnek 3: Üst Kapsamdaki Bir Değişkenin Değerini Değiştirme

Özel seçeneğini veya başka bir yöntemi kullanarak bir öğeyi korumadığınız sürece, üst kapsamdaki bir değişkenin değerini görüntüleyebilir ve değiştirebilirsiniz.

İlk olarak, genel kapsamda bir $test değişkeni tanımlayın.

$test = "Global"

Ardından, $test değişkenini tanımlayan bir Sample.ps1 betiği oluşturun. Betikte, $test değişkeninin genel veya yerel sürümlerine başvurmak için bir kapsam değiştirici kullanın.

Sample.ps1içinde:

$global:test = "Local"
"The global value of `$test is $global:test."

Betik tamamlandığında, $test'ın global değeri değiştirilmiş olur.

PS>  $test
Local

Örnek 4: Özel Değişken Oluşturma

Özel değişken, Private değerine sahip bir Option özelliğine sahip bir değişkendir. Özel değişkenler alt kapsam tarafından devralınır, ancak yalnızca oluşturuldukları kapsamda görüntülenebilir veya değiştirilebilir.

Aşağıdaki komut, yerel kapsamda çağrılan $ptest özel bir değişken oluşturur.

New-Variable -Name ptest -Value 1 -Option private

Yerel kapsamdaki değerini $ptest görüntüleyebilir ve değiştirebilirsiniz.

PS>  $ptest
1

PS>  $ptest = 2
PS>  $ptest
2

Ardından, aşağıdaki komutları içeren bir Sample.ps1 komut dosyası oluşturun. Komut, değerini $ptestgörüntülemeye ve değiştirmeye çalışır.

Sample.ps1içinde:

"The value of `$Ptest is $Ptest."
"The value of `$Ptest is $global:Ptest."

Değişken $ptest kod kapsamında görünmez, çıktı boştur.

"The value of $Ptest is ."
"The value of $Ptest is ."

Örnek 5: Uzak Komutta Yerel Değişken Kullanma

Yerel oturumda oluşturulan uzak komuttaki değişkenler için Using kapsam değiştiricisini kullanın. PowerShell, uzak komutlardaki değişkenlerin uzak oturumda oluşturulduğunu varsayar.

Sözdizimi şöyledir:

$Using:<VariableName>

Örneğin, aşağıdaki komutlar yerel oturumda bir $Cred değişkeni oluşturur ve ardından uzak komutta $Cred değişkenini kullanır:

$Cred = Get-Credential
Invoke-Command $s {Remove-Item .\Test*.ps1 -Credential $Using:Cred}

Using kapsamı PowerShell 3.0'da kullanıma sunulmuştur. PowerShell 2.0'da, yerel oturumda bir değişkenin oluşturulduğunu belirtmek için aşağıdaki komut biçimini kullanın.

$Cred = Get-Credential
Invoke-Command $s {
  param($c)
  Remove-Item .\Test*.ps1 -Credential $c
} -ArgumentList $Cred

Ayrıca bakınız