about_Scopes

Rövid leírás

Ismerteti a hatókör fogalmát a PowerShellben, és bemutatja, hogyan állíthatja be és módosíthatja az elemek hatókörét.

Hosszú leírás

A PowerShell védi a változókhoz, aliasokhoz, függvényekhez és PowerShell-meghajtókhoz (PSDrive-hoz) való hozzáférést azáltal, hogy korlátozza az olvashatóságuk és a módosításuk helyét. A PowerShell hatókörszabályokat használ annak biztosítására, hogy véletlenül ne módosítson olyan elemet, amelyet nem szabad módosítani.

A hatókör alapvető szabályai a következők:

  • A hatókörök beágyazhatók. A külső hatókört szülőhatókörnek nevezzük. A beágyazott hatókörök a szülő gyermekhatókörei.

  • Az elemek a létrehozás hatókörében és a gyermekhatókörökben is láthatók, kivéve, ha kifejezetten magánjellegűvé teszi.

  • Az aktuális hatókörön kívüli hatókörhöz deklarálhat változókat, aliasokat, függvényeket és PowerShell-meghajtókat.

  • A hatókörön belül létrehozott elemek csak abban a hatókörben módosíthatók, amelyben létrehozták, hacsak nem ad meg külön hatókört.

Ha létrehoz egy elemet egy hatókörben, és az elem egy másik hatókörben lévő elemgel osztja meg a nevét, előfordulhat, hogy az eredeti elem el van rejtve az új elem alatt, de nincs felülírva vagy módosítva.

PowerShell-hatókörök

A PowerShell a következő hatóköröket támogatja:

  • Globális: A PowerShell indításakor vagy új munkamenet vagy futtatókörnyezet létrehozásakor érvényes hatókör. A PowerShell indításakor megjelenő változók és függvények a globális hatókörben lettek létrehozva, például az automatikus változók és a beállítási változók. A PowerShell-profilok változói, aliasai és függvényei szintén a globális hatókörben jönnek létre. A globális hatókör egy munkamenet gyökér szülő hatóköre.

  • Helyi: Az aktuális hatókör. A helyi hatókör lehet a globális vagy bármely más hatókör.

  • Szkript: A szkriptfájl futtatásakor létrehozott hatókör. Csak a szkript parancsai futnak a szkript hatókörében. A szkript parancsaihoz a szkript hatóköre a helyi hatókör.

Szülő- és gyermekhatókörök

Egy szkript vagy függvény meghívásával létrehozhat egy új gyermekhatókört. A hívó hatókör a szülő hatókör. Az úgynevezett szkript vagy függvény a gyermek hatóköre. A hívott függvények vagy szkriptek más függvényeket is meghívhatnak, és olyan gyermekhatókör-hierarchiát hozhatnak létre, amelynek gyökér hatóköre a globális hatókör.

Hacsak nem teszi kifejezetten privátsá az elemeket, a szülő hatókörben lévő elemek elérhetők a gyermek hatókör számára. A gyermek hatókörben létrehozott és módosított elemek azonban nem befolyásolják a szülő hatókört, kivéve, ha explicit módon adja meg a hatókört az elemek létrehozásakor.

Megjegyzés

A modulból származó függvények nem futnak a hívási hatókör gyermek hatókörében. A modulok saját munkamenet-állapotukkal rendelkeznek, amely a globális hatókörhöz kapcsolódik. Minden modulkód a saját gyökérhatókörrel rendelkező hatókörök modulspecifikus hierarchiájában fut.

Öröklődés

A gyermekhatókör nem örökli a változókat, aliasokat és függvényeket a szülőhatókörből. Ha egy elem nem privát, a gyermekhatókör megtekintheti a szülőhatókör elemeit. Az elemeket módosíthatja a szülőhatókör explicit megadásával, de az elemek nem részei a gyermekhatókörnek.

A gyermekhatókör azonban elemkészlettel jön létre. Általában az összes olyan aliast tartalmazza, amely rendelkezik az AllScope beállítással. Ezt a lehetőséget a cikk későbbi részében tárgyaljuk. Tartalmazza az összes olyan változót, amely rendelkezik az AllScope beállítással, valamint néhány automatikus változót is.

Ha egy adott hatókörben szeretné megkeresni az elemeket, használja a vagy a Hatókör paraméterét Get-VariableGet-Alias.

A helyi hatókörben lévő összes változó lekéréséhez például írja be a következőt:

Get-Variable -Scope local

A globális hatókör összes változójának lekéréséhez írja be a következőt:

Get-Variable -Scope global

Hatókör módosítói

A változók, aliasok vagy függvénynevek a következő választható hatókörmódosítók bármelyikét tartalmazhatják:

  • global: – Azt adja meg, hogy a név létezik-e a globális hatókörben.

  • local: – Azt adja meg, hogy a név létezik-e a Helyi hatókörben. Az aktuális hatókör mindig a Helyi hatókör.

  • private: – Azt adja meg, hogy a név Privát , és csak az aktuális hatókör számára látható.

    Megjegyzés

    private nem hatókör. Ez egy olyan lehetőség , amely megváltoztatja egy elem láthatóságát azon a hatókörön kívül, ahol az elem definiálva van.

  • script: – Megadja, hogy a név szerepel-e a szkript hatókörében. A szkript hatóköre az ősszkriptfájl hatóköre vagy globális , ha nincs legközelebbi ősszkriptfájl.

  • using: – Egy másik hatókörben definiált változók elérésére szolgál, miközben szkripteket futtat az olyan parancsmagokkal, mint a Start-Job és Invoke-Commanda parancsmagok.

  • workflow: – Megadja, hogy a név létezik-e egy munkafolyamaton belül. Megjegyzés: A munkafolyamatok nem támogatottak a PowerShell 6-os és újabb verzióiban.

  • <variable-namespace> – Egy PowerShell PSDrive-szolgáltató által létrehozott módosító. Például:

    Névtér Description
    Alias: Az aktuális hatókörben definiált aliasok
    Env: Az aktuális hatókörben definiált környezeti változók
    Function: Az aktuális hatókörben definiált függvények
    Variable: Az aktuális hatókörben definiált változók

A szkriptek alapértelmezett hatóköre a szkript hatóköre. A függvények és aliasok alapértelmezett hatóköre a helyi hatókör, még akkor is, ha parancsfájlban vannak definiálva.

Hatókörmódosítók használata

Egy új változó, alias vagy függvény hatókörének megadásához használjon hatókör-módosítót.

Egy változó hatókör-módosítójának szintaxisa a következő:

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

Egy függvény hatókör-módosítójának szintaxisa a következő:

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

A következő parancs, amely nem használ hatókör-módosítót, létrehoz egy változót az aktuális vagy helyi hatókörben:

$a = "one"

Ha ugyanazt a változót szeretné létrehozni a globális hatókörben, használja a hatókör-módosítót global: :

$global:a = "one"
Get-Variable a | Format-List *

Figyelje meg a Láthatóság és beállítások tulajdonság értékeit.

Name        : a
Description :
Value       : one
Visibility  : Public
Module      :
ModuleName  :
Options     : None
Attributes  : {}

Hasonlítsa össze ezt egy privát változóval:

$private:pVar = 'Private variable'
Get-Variable pVar | Format-List *

A hatókör-módosító használatával a privateOptions tulajdonság értéke .Private

Name        : pVar
Description :
Value       : Private variable
Visibility  : Public
Module      :
ModuleName  :
Options     : Private
Attributes  : {}

Ha ugyanazt a változót szeretné létrehozni a szkript hatókörében, használja a script: hatókör-módosítót:

$script:a = "one"

A hatókör-módosítót függvényekkel is használhatja. A következő függvénydefiníció létrehoz egy függvényt a globális hatókörben:

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

A hatókörmódosítókkal egy másik hatókörben lévő változóra is hivatkozhat. A következő parancs a $test változóra hivatkozik, először a helyi hatókörben, majd a globális hatókörben:

$test
$global:test

A Using: hatókör-módosító

A használata egy speciális hatókör-módosító, amely egy helyi változót azonosít egy távoli parancsban. Módosító nélkül a PowerShell elvárja, hogy a távoli parancsok változói definiálva legyenek a távoli munkamenetben.

A Using hatókör-módosító a PowerShell 3.0-s verzióban érhető el.

A munkameneten kívül végrehajtott szkriptek vagy parancsok esetében a Using hatókör-módosítóra van szüksége a változóértékek beágyazásához a hívási munkamenet hatóköréből, hogy a munkameneten kívüli kód hozzáférhessen hozzájuk. A Using hatókör-módosító a következő környezetekben támogatott:

  • Távolról végrehajtott parancsok, a ComputerName, a HostName, az SSHConnection vagy a Session paraméterek (távoli munkamenet) használatával kezdve Invoke-Command
  • Háttérfeladatok, első lépések Start-Job (folyamaton kívüli munkamenet)
  • Szálfeladatok, vagy ForEach-Object -Parallel (Start-ThreadJobkülön hozzászóláslánc-munkamenettel) indítva

A környezettől függően a beágyazott változóértékek vagy a hívó hatókörében lévő adatok független másolatai, vagy arra mutató hivatkozások. A távoli és a folyamaton kívüli munkamenetekben ezek mindig független másolatok.

További információ: about_Remote_Variables.

A szál-munkamenetekben a rendszer hivatkozással továbbítja őket. Ez azt jelenti, hogy a híváshatókör-változók módosíthatók egy másik szálon. A változók biztonságos módosításához szálszinkronizálás szükséges.

További információ:

Változóértékek szerializálása

A távolról végrehajtott parancsok és háttérfeladatok folyamaton kívül futnak. A folyamaton kívüli munkamenetek XML-alapú szerializálással és deszerializálással teszik elérhetővé a változók értékeit a folyamathatárok között. A szerializálási folyamat az objektumokat PSObject objektummá alakítja, amely az eredeti objektumtulajdonságokat tartalmazza, a metódusait azonban nem.

Korlátozott típuskészlet esetén a deszerializálás újrahidratálja az objektumokat az eredeti típusra. A rehidratált objektum az eredeti objektumpéldány másolata. Típustulajdonságokkal és metódusokkal rendelkezik. Az egyszerű típusok, például a System.Version esetében a másolat pontos. Összetett típusok esetén a másolat nem tökéletes. A rehidratált tanúsítványobjektumok például nem tartalmazzák a titkos kulcsot.

Az összes többi típus példányai PSObject-példányok . A PSTypeNames tulajdonság tartalmazza a Deserialized előtaggal ellátott eredeti típusnevet, például Deserialized.System.Data.DataTable

Az AllScope beállítás

A változóknak és aliasoknak van egy Option tulajdonsága, amely az AllScope értéket veheti fel. Az AllScope tulajdonságú elemek a létrehozott gyermekhatókörök részévé válnak, bár a szülőhatókörök nem öröklik visszamenőlegesen őket.

Az AllScope tulajdonságot tartalmazó elem látható a gyermekhatókörben, és annak a hatókörnek a része. Az elem bármely hatókörben történő módosítása hatással van az összes hatókörre, amelyben a változó definiálva van.

Hatókör kezelése

Számos parancsmag rendelkezik egy Scope paraméterrel, amely lehetővé teszi egy adott hatókör elemeinek lekérését vagy beállítását (létrehozását és módosítását). Az alábbi paranccsal keresse meg a munkamenetben az összes olyan parancsmagot, amely rendelkezik Scope paraméterrel:

Get-Help * -Parameter scope

Az adott hatókörben látható változók megkereséséhez használja a Scope paramétert Get-Variable. A látható változók közé tartoznak a globális változók, a szülőhatókörben lévő változók és az aktuális hatókörben lévő változók.

A következő parancs például lekéri a helyi hatókörben látható változókat:

Get-Variable -Scope local

Ha egy adott hatókörben szeretne változót létrehozni, használja a hatókör-módosítót vagy a Hatókör paraméterét Set-Variable. A következő parancs létrehoz egy változót a globális hatókörben:

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

A hatókör megadásához használhatja a New-Alias, Set-Aliasvagy Get-Alias parancsmagok Hatókör paraméterét is. A következő parancs létrehoz egy aliast a globális hatókörben:

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

Ha egy adott hatókörben szeretné lekérni a függvényeket, használja a Get-Item parancsmagot, amikor a hatókörben van. A Get-Item parancsmag nem rendelkezik Scope paraméterrel.

Megjegyzés

A Scope paramétert használó parancsmagok esetében szám szerint is hivatkozhat a hatókörökre. A szám az egyik hatókör egymáshoz viszonyított pozícióját írja le. A 0. hatókör az aktuális vagy helyi hatókört jelöli. Az 1. hatókör az azonnali szülőhatókört jelöli. A 2. hatókör a szülőhatókör szülője, és így tovább. A számozott hatókörök akkor hasznosak, ha sok rekurzív hatókört hozott létre.

Pontforrás jelölésének használata hatókörrel

A szkriptek és függvények a hatókör összes szabályát követik. Ezeket egy adott hatókörben hozza létre, és csak erre a hatókörre van hatással, kivéve, ha parancsmagparamétert vagy hatókör-módosítót használ a hatókör módosításához.

A parancsprogramot vagy függvényt azonban pontforrás-jelöléssel is hozzáadhatja az aktuális hatókörhöz. Ezután, amikor egy szkript az aktuális hatókörben fut, a szkript által létrehozott függvények, aliasok és változók elérhetők az aktuális hatókörben.

Ha függvényt szeretne hozzáadni az aktuális hatókörhöz, írjon be egy pont (.) és egy szóközt a függvény hívásában szereplő függvény elérési útja és neve elé.

Ha például a Sample.ps1 szkriptet a szkript hatókörében lévő C:\Scripts könyvtárból szeretné futtatni (ez a szkriptek alapértelmezett beállítása), használja a következő parancsot:

c:\scripts\sample.ps1

A Sample.ps1 szkript helyi hatókörben való futtatásához használja a következő parancsot:

. c:\scripts.sample.ps1

Ha a hívó operátort (&) használja egy függvény vagy szkript futtatásához, az nem lesz hozzáadva az aktuális hatókörhöz. Az alábbi példa a hívási operátort használja:

& c:\scripts.sample.ps1

A híváskezelőről a about_operators című témakörben olvashat bővebben.

A Sample.ps1 szkript által létrehozott aliasok, függvények vagy változók nem érhetők el az aktuális hatókörben.

Hatókör nélküli korlátozás

Néhány PowerShell-fogalom hasonló a hatókörhöz vagy a hatókörhöz. Ezek a fogalmak összekeverhetők a hatókörrel vagy a hatókör viselkedésével.

A munkamenetek, modulok és beágyazott kérések önálló környezetek, de nem a globális hatókör gyermekhatókörei a munkamenetben.

Munkamenetek

A munkamenet olyan környezet, amelyben a PowerShell fut. Amikor munkamenetet hoz létre egy távoli számítógépen, a PowerShell állandó kapcsolatot létesít a távoli számítógéppel. Az állandó kapcsolat lehetővé teszi, hogy a munkamenetet több kapcsolódó parancshoz használja.

Mivel a munkamenet tartalmazott környezet, saját hatókörrel rendelkezik, de a munkamenet nem annak a munkamenetnek a gyermekhatóköre, amelyben létrehozták. A munkamenet a saját globális hatókörével kezdődik. Ez a hatókör független a munkamenet globális hatókörétől. A munkamenetben létrehozhat gyermekhatóköröket. Futtathat például egy szkriptet egy gyermekhatókör létrehozásához egy munkamenetben.

Modulok

PowerShell-modullal megoszthatja és el tudja juttatni a PowerShell-eszközöket. A modul olyan egység, amely parancsmagokat, szkripteket, függvényeket, változókat, aliasokat és egyéb hasznos elemeket tartalmazhat. Ha nincs explicit módon definiálva, a modul elemei nem érhetők el a modulon kívül. Ezért hozzáadhatja a modult a munkamenethez, és használhatja a nyilvános elemeket anélkül, hogy aggódnia kellene amiatt, hogy a többi elem felülbírálhatja a parancsmagokat, szkripteket, függvényeket és a munkamenet egyéb elemeit.

Alapértelmezés szerint a modulok az aktuális munkamenet állapotának legfelső szintjére töltődnek be, nem az aktuális hatókörbe. Az aktuális munkamenet állapota lehet modulmunkamenet-állapot vagy globális munkamenet-állapot. A modul munkamenethez való hozzáadása nem változtatja meg a hatókört. Ha a globális hatókörben van, akkor a modulok betöltve lesznek a globális munkamenet állapotába. Az exportálások a globális táblákba kerülnek. Ha a modul2 modult az 1 . modulból tölti be, a modul2 nem a globális munkamenet-állapotba, hanem az 1. modul munkamenetállapotába lesz betöltve. A 2. modulból származó exportálások a modul1 munkamenet-állapotának tetejére kerülnek. A használata esetén Import-Module -Scope localaz exportálások a legfelső szint helyett az aktuális hatókörobjektumba kerülnek. Ha egy modulban egy másik modul betöltésére (vagy Import-Module -Global) van szüksége Import-Module -Scope global , akkor a modul és annak exportálása a modul helyi munkamenet-állapota helyett a globális munkamenet állapotába lesz betöltve. Ez a funkció modulok manipulálására szolgáló modul írására lett tervezve. A Windows kompatibilitási modulja ezt teszi a proxymodulok globális munkamenet-állapotba való importálásához.

A munkamenet-állapoton belül a modulok saját hatókörrel rendelkeznek. Vegye figyelembe a következő modult C:\temp\mod1.psm1:

$a = "Hello"

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

Most létrehozunk egy globális változót $a, adjon neki egy értéket, és hívja meg a foo függvényt.

$a = "Goodbye"
foo

A modul deklarálja a változót $a a modul hatókörében, majd a foo függvény mindkét hatókörben kiadja a változó értékét.

$a = Hello
$global:a = Goodbye

Beágyazott parancssorok

A beágyazott kéréseknek nincs saját hatókörük. Beágyazott parancssor megadásakor a beágyazott parancssor a környezet egy részhalmaza. De továbbra is a helyi hatókörön belül marad.

A szkripteknek saját hatókörük van. Ha hibakeresést futtat egy szkripten, és eléri a töréspontot a szkriptben, meg kell adnia a szkript hatókörét.

Privát beállítás

Az aliasok és a változók option tulajdonsága a értéket Privateveheti figyelembe. A beállítással rendelkező Private elemek megtekinthetők és módosíthatók abban a hatókörben, amelyben létrehozták őket, de nem tekinthetők meg és nem módosíthatók ezen a hatókörön kívül.

Ha például létrehoz egy olyan változót, amelynek privát lehetősége van a globális hatókörben, majd futtat egy szkriptet, Get-Variable a szkript parancsai nem jelenítik meg a privát változót. A globális hatókör-módosító használata ebben a példányban nem jeleníti meg a privát változót.

A , Set-Variable, New-Aliasés Set-Alias parancsmagok Option paraméterével New-Variableaz Option tulajdonság értékét Privát értékre állíthatja.

Láthatóság

Egy változó vagy alias Láthatóság tulajdonsága határozza meg, hogy látható-e az elem azon a tárolón kívül, amelyben létrejött. A tárolók lehetnek modulok, szkriptek vagy beépülő modulok. A láthatóság a tárolókhoz ugyanúgy van kialakítva, mint az PrivateOption tulajdonság értéke a hatókörökhöz.

A Láthatóság tulajdonság a és Private az Public értékeket veszi fel. A privát láthatóságú elemek csak abban a tárolóban tekinthetők meg és módosíthatók, amelyben létrehozták őket. A tároló hozzáadása vagy importálása esetén a privát láthatóságú elemek nem tekinthetők meg és nem módosíthatók.

Mivel a láthatóság tárolókhoz van kialakítva, a hatókörön belül másként működik.

  • Ha olyan elemet hoz létre, amely privát láthatóságot biztosít a globális hatókörben, nem tekintheti meg és nem módosíthatja az elemet egyetlen hatókörben sem.
  • Ha egy privát láthatóságú változó értékét próbálja megtekinteni vagy módosítani, a PowerShell hibaüzenetet ad vissza.

A és Set-Variable a New-Variable parancsmagok használatával létrehozhat egy privát láthatóságú változót.

Példák

1. példa: Változóérték módosítása csak szkriptben

A következő parancs módosítja a $ConfirmPreference változó értékét egy szkriptben. A módosítás nincs hatással a globális hatókörre.

Először a változó helyi hatókörben való $ConfirmPreference megjelenítéséhez használja a következő parancsot:

PS>  $ConfirmPreference
High

Hozzon létre egy Scope.ps1 szkriptet, amely a következő parancsokat tartalmazza:

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

Futtassa a szkriptet. A szkript módosítja $ConfirmPreference a változó értékét, majd jelentést készít annak értékéről a szkript hatókörében. A kimenetnek a következő kimenethez kell hasonlítania:

The value of $ConfirmPreference is Low.

Ezután tesztelje $ConfirmPreference a változó aktuális értékét az aktuális hatókörben.

PS>  $ConfirmPreference
High

Ez a példa azt mutatja, hogy a szkript hatókörében lévő változó értékének módosítása nem befolyásolja a változó szülőhatókörbeli értékét.

2. példa: Változóérték megtekintése különböző hatókörökben

A hatókörmódosítók használatával megtekintheti egy változó értékét a helyi hatókörben és a szülő hatókörben.

Először definiáljon egy változót $test a globális hatókörben.

$test = "Global"

Ezután hozzon létre egy Sample.ps1 szkriptet, amely meghatározza a változót $test . A szkriptben használjon hatókör-módosítót a változó globális vagy helyi verzióira $test való hivatkozáshoz.

A Sample.ps1:

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

A Sample.ps1 futtatásakor a kimenetnek a következő kimenethez kell hasonlítania:

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

Ha a szkript befejeződött, a munkamenetben csak a globális érték $test lesz definiálva.

PS>  $test
Global

3. példa: Változó értékének módosítása szülőhatókörben

Ha nem véd meg egy elemet a Privát beállítással vagy más módszerrel, megtekintheti és módosíthatja egy változó értékét egy szülőhatókörben.

Először definiáljon egy változót $test a globális hatókörben.

$test = "Global"

Ezután hozzon létre egy Sample.ps1 szkriptet, amely meghatározza a változót $test . A szkriptben használjon hatókör-módosítót a változó globális vagy helyi verzióira $test való hivatkozáshoz.

A Sample.ps1:

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

Amikor a szkript elkészült, a globális érték $test megváltozik.

PS>  $test
Local

4. példa: Privát változó létrehozása

A magánváltozó olyan változó, amelynek Értéke Option tulajdonság Private. Private a változókat a gyermek hatókör örökli, de csak abban a hatókörben tekinthetők meg vagy módosíthatók, amelyben létrehozták őket.

A következő parancs létrehoz egy nevű $ptest privát változót a helyi hatókörben.

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

A helyi hatókörben megjelenítheti és módosíthatja $ptest az értékét.

PS>  $ptest
1

PS>  $ptest = 2
PS>  $ptest
2

Ezután hozzon létre egy Sample.ps1 szkriptet, amely a következő parancsokat tartalmazza. A parancs megpróbálja megjeleníteni és módosítani a értékét $ptest.

A Sample.ps1:

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

A $ptest változó nem látható a szkript hatókörében, a kimenet üres.

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

5. példa: Helyi változó használata távoli parancsban

A helyi munkamenetben létrehozott távoli parancs változóihoz használja a Using hatókör-módosítót. A PowerShell feltételezi, hogy a távoli parancsok változói a távoli munkamenetben lettek létrehozva.

A szintaxis a következő:

$Using:<VariableName>

A következő parancsok például létrehoznak egy változót $Cred a helyi munkamenetben, majd egy távoli parancsban használják a $Cred változót:

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

A Hatókör használata a PowerShell 3.0-ban lett bevezetve. A PowerShell 2.0-ban a következő parancsformátumot használva jelezheti, hogy a helyi munkamenetben létrehozott egy változót.

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

Lásd még