Kapsamlar Hakkında

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ştirilebilecekleri yerleri sınırlayarak değişkenlere, diğer adlara, işlevlere ve PowerShell sürücülerine (PSDrive' lar) erişimi korur. PowerShell, değiştirilmemesi gereken bir öğeyi yanlışlıkla değiştirmediğinizden emin olmak için kapsam kurallarını kullanır.

Temel kapsam kuralları şunlardır:

  • Kapsamlar iç içe olabilir. Dış kapsam, üst kapsam olarak adlandırılır. İç içe yerleştirilmiş kapsamlar, bu üst öğeye ait alt kapsamlardır.

  • Açıkça özel hale getirmediğiniz sürece, öğe oluşturulduğu kapsamda ve alt kapsamlarda görünür. Değişkenleri, diğer adları, işlevleri veya PowerShell sürücülerini bir veya daha fazla kapsama yerleştirebilirsiniz.

  • Bir 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ı kapsamdaki bir öğeyle paylaşırsa, özgün öğe yeni öğenin altına gizlenmiş olabilir, ancak geçersiz kılınmamış veya değiştirilmemiştir.

PowerShell Kapsamları

PowerShell aşağıdaki kapsamları destekler:

  • Genel: PowerShell başlatıldığında veya yeni bir oturum veya ç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, oturumdaki kök üst kapsamdır.

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

  • Betik: Betik dosyası çalışırken oluşturulan kapsam. Yalnızca betikteki komutlar betik kapsamında çalışır. Betikteki komutlar için betik kapsamı yerel kapsamdır.

Not

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

Üst ve Alt Kapsamlar

Betik veya işlev çağırarak yeni bir alt kapsam oluşturabilirsiniz. Çağıran kapsam üst kapsamdır. Ç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, öğeleri oluştururken kapsamı açıkça belirtmediğiniz sürece, alt kapsamda oluşturduğunuz ve değiştirdiğiniz öğeler üst kapsamı etkilemez.

Not

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

Devralma

Alt kapsam üst kapsamdan değişkenleri, diğer adları ve işlevleri devralmaz. Bir öğe özel değilse, 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 öğe kümesiyle 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 veya Get-Aliaskapsam parametresini Get-Variable 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 birini içerebilir:

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

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

  • private: - Adın Özel olduğunu ve yalnızca geçerli kapsama 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ıdır veya en yakın üst betik dosyası yoksa Genel'dir .

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

  • workflow: - Adın bir iş akışı içinde var olduğunu belirtir. Not: İş akışları PowerShell Core'da desteklenmez.

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

    Ad Alanı Description
    Alias: Geçerli kapsamda tanımlanan diğer 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

Betikler için varsayılan kapsam, betik kapsamıdır. İşlevler ve diğer adlar için varsayılan kapsam, bir betikte tanımlansalar 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ştiricisinin söz dizimi şu şekildedir:

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

bir işlevde kapsam değiştiricisinin söz dizimi şu şekildedir:

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

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

$a = "one"

Genel kapsamda 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 kapsam değiştiricisini script: kullanın:

$script:a = "one"

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

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

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

$test
$global:test

Kapsam Using: değiştirici

kullanma, uzak komuttaki yerel bir 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.

Kapsam Using değiştirici PowerShell 3.0'da kullanıma sunulmuştur.

Oturum dışında yürütülen herhangi bir betik veya komut için, oturum dışı kodun Using bunlara erişebilmesi için çağıran oturum kapsamından değişken değerleri eklemek için kapsam değiştiricisine ihtiyacınız vardır. Kapsam Using değiştirici aşağıdaki bağlamlarda desteklenir:

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

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.

Daha fazla bilgi için bkz. about_Remote_Variables.

İş parçacığı oturumlarında bunlar başvuru ile 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ığı eşitlemesi gerekir.

Daha fazla bilgi için bkz.:

Değişken değerlerini seri hale getirme

Uzaktan yürütülen komutlar ve arka plan işleri işlem dışı çalışı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ış gibi ön ekli özgün tür adını içerir, örneğin, Deserialized.System.Data.DataTable

AllScope Seçeneği

Değişkenler ve diğer adlar, AllScope değerini alabilen bir Option özelliğine sahiptir. AllScope özelliğine sahip öğeler, üst kapsamlar tarafından geriye dönük olarak devralınmasa da, oluşturduğunuz alt kapsamların bir parçası olur.

AllScope özelliğine sahip bir öğe alt kapsamda görünü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önetme

Bazı cmdlet'ler, belirli bir kapsamdaki öğeleri almanıza veya ayarlamanıza (oluşturmanıza ve değiştirmenize) olanak tanıyan bir Scope parametresine sahiptir. Oturumunuzda Scope 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 parametresini ScopeGet-Variablekullanı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 kapsam değiştiricisini veya scope parametresini Set-Variablekullanı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 , Set-Aliasveya Get-Alias cmdlet'lerinin New-AliasScope 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, kapsamdayken cmdlet'ini kullanın Get-Item . Cmdlet'in Get-Itemscope parametresi yok.

Not

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, üst kapsamı gösterir. Kapsam 2, üst kapsamın üst öğesini gösterir ve bu şekilde devam eder. Çok sayıda özyinelemeli kapsam oluşturduysanız, numaralandırılmış kapsamlar yararlıdır.

Kapsam ile NoktaLı Kaynak Gösterimi Kullanma

Betikler 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ı etkilerler.

Ancak, noktalı kaynak gösterimini kullanarak geçerli kapsama bir betik veya işlev ekleyebilirsiniz. Ardından, bir betik geçerli kapsamda çalıştırıldığında, betiğin oluşturduğu tüm işlevler, diğer adlar ve değişkenler geçerli kapsamda kullanılabilir.

Geçerli kapsama işlev eklemek için, işlev çağrısındaki işlevin yolunun ve adının önüne bir nokta (.) ve bir boşluk yazın.

Örneğin, betik kapsamındaki C:\Scripts dizininden Sample.ps1 betiğini çalıştırmak için (betikler için varsayılan) 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 betiği çalıştırmak için çağrı işlecini (&) kullandığınızda, geçerli kapsama eklenmez. Aşağıdaki örnekte çağrı işleci kullanılır:

& c:\scripts.sample.ps1

about_operators'de çağrı işleci hakkında daha fazla bilgi edinebilirsiniz.

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ı kapsam veya kapsamla etkileşime benzer. Bu kavramlar kapsam veya kapsamın davranışıyla 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 bir 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ı vardır, ancak 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 betik ç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ığı sürece 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 ortak öğ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ışarı aktarmalar genel tablolara yerleştirilir. Module2'yi modül1 içinden yüklerseniz modül2, genel oturum durumuna değil modül1 oturum durumuna yüklenir. Module2'den yapılan tüm dışarı aktarmalar modül1 oturum durumunun en üstüne yerleştirilir. kullanırsanız Import-Module -Scope local, dışarı aktarmalar en üst düzeyde değil geçerli kapsam nesnesine yerleştirilir. Bir modüldeyseniz ve başka bir modülü yüklemek için (veya Import-Module -Global) kullanıyorsanız Import-Module -Scope global , bu modül ve dışarı aktarmaları modülün yerel oturum durumu yerine genel oturum durumuna yüklenir. Bu özellik, modülleri işleyen modül yazmak için tasarlanmıştır. Windows Uyumluluğu modülü, ara sunucu modüllerini genel oturum durumuna aktarmak için bunu yapar.

Oturum durumunda modüllerin kendi kapsamı 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 bir genel değişken $aoluşturuyoruz, buna bir değer veriyoruz ve işleve foo adını veriyoruz.

$a = "Goodbye"
foo

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

$a = Hello
$global:a = Goodbye

İç İçe Istemler

İç içe istemlerin kendi kapsamı 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, Özel değerini alabilen bir Option özelliğine sahiptir. Özel seçeneği olan öğ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 ardından bir betik çalıştırırsanız, Get-Variable betikteki komutlar özel değişkeni görüntülemez. Bu örnekte genel kapsam değiştiricisi kullanıldığında özel değişken görüntülenmez.

Option özelliğinin New-Variabledeğerini Private olarak ayarlamak için , Set-Variable, New-Aliasve Set-Alias cmdlet'lerinin Option parametresini kullanabilirsiniz.

Görünürlük

Bir değişkenin veya diğer adın Visibility ö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 Özel değerinin kapsamlar için tasarlandığı şekilde kapsayıcılar için tasarlanmıştır.

Visibility özelliği Genel ve Özel değerlerini 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çeri aktarılırsa, özel görünürlüğe sahip öğeler görüntülenemez veya değiştirilemez.

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

  • Genel kapsamda özel görünürlüğe sahip bir öğe oluşturursanız, öğeyi hiç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 ve Set-Variable cmdlet'lerini kullanabilirsinizNew-Variable.

Örnekler

Örnek 1: Yalnızca Bir Betikte Değişken Değerini Değiştirme

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

İlk olarak, değişkenin $ConfirmPreference değerini yerel kapsamda 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."

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

The value of $ConfirmPreference is Low.

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

PS>  $ConfirmPreference
High

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

Örnek 2: Değişken Değerini Farklı Kapsamlarda 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şken tanımlayın.

$test = "Global"

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

Sample.ps1'da:

$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 çıkışa benzemelidir:

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

Betik tamamlandığında, oturumda yalnızca genel değeri $test 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şken tanımlayın.

$test = "Global"

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

Sample.ps1'da:

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

Betik tamamlandığında genel değeri $test değiştirilir.

PS>  $test
Local

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

Özel değişken, Private değerine sahip 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 adlı $ptest özel bir değişken oluşturur.

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

değerini $ptest yerel kapsamda 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 betiği oluşturun. komutu değerini görüntülemeye ve değiştirmeye $ptestçalışır.

Sample.ps1'da:

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

Değişken $ptest betik kapsamında görünmez, çıkış boş olur.

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

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

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

Söz dizimi aşağıdaki gibidir:

$Using:<VariableName>

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

$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 bkz.

about_Variables

about_Environment_Variables

about_Functions

about_Script_Blocks

Start-ThreadJob