Angiv adgangsbeskyttelse til variabler, aliasser og funktioner ved hjælp af områdeændringen

Fuldført

Windows PowerShell giver adgangsbeskyttelse til variabler, aliasser, funktioner og Windows PowerShell-drev ved at begrænse, hvor de kan ændres og læses. Ved at gennemtvinge nogle få enkle regler ved hjælp af Windows PowerShell-områder sikrer du, at du ikke utilsigtet ændrer et element, der ikke skal ændres. De grundlæggende regler for områder er:

  • Medmindre du eksplicit gør den privat, er elementer, du medtager i et område, synlige i det område, hvor det blev oprettet, og i et underordnet område. Du kan bruge variabler, aliasser, funktioner eller Windows PowerShell-drev i et eller flere områder.
  • Elementer, du opretter i et område, kan kun ændres i det område, hvor elementet blev oprettet, medmindre du eksplicit angiver et andet område.

Hvis du opretter et element i et område, og elementet har samme navn som et element i et andet område, kan det oprindelige element blive skjult under det nye element. Det bliver dog ikke tilsidesat eller ændret.

Du kan bruge lokale variabler i fjernkommandoer, men du skal angive, at variablen er defineret i den lokale session. Windows PowerShell forudsætter, at de variabler, der bruges i fjernkommandoer, er defineret i den session, hvor kommandoen kører.

$Using: områdeændring

Som tidligere nævnt kan du starte med Windows PowerShell 3.0 implementere den $Using: områdeændring for at identificere en lokal variabel i en fjernkommando. Dette er en særlig områdeændring og er den mest enkle måde at referere til en lokal variabel på i en fjernkommando. Denne teknik overfører variabelværdien eller -værdierne til fjerncomputeren og involverer derfor mindre behandling på tværs af de værter, der bruges. Variabler i fjernkommandoer antages som standard at være defineret i fjernsessionen.

Syntaksen for Using er $Using:.

I følgende eksempel oprettes variablen $ps i den lokale session, men den bruges i den session, hvor kommandoen kører. Områdeændringen $Using: identificerer $ps som en lokal variabel:

$ps = "Windows PowerShell" 

Invoke-Command -ComputerName LON-DC1 -ScriptBlock {Get-WinEvent -LogName $Using:ps}

Du kan også anvende $Using: områdeændring i PSSessions, f.eks. i følgende eksempel:

$s = New-PSSession -ComputerName LON-DC1

$ps = "Windows PowerShell"

Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}