Brug variabelområde i Windows PowerShell-scripts
Du kan forvente, at den variabel, $computer du sætter inde i en funktion, er tilgængelig i scriptet efter funktionen er fuldført. Det er ikke tilfældet. Variabler har et specifikt omfang, der begrænser, hvordan de interagerer med andre omfang.
I følgende tabel beskrives de tre områder, og hvordan de påvirker brugen af variabler.
tabel 1: Områder
| område | beskrivelse |
|---|---|
| Global | Variabler sat ved PowerShell-prompten er tilgængelige for alle scripts, der startes fra den prompt, men ikke for andre prompts eller ISE-instanser. |
| Script | Variabler sat i et script er tilgængelige for alle funktioner i det script. Hvis du opretter en script-scope-variabel med samme navn som en global variabel, opretter PowerShell en ny variabel i scriptscope, og script-scope-værdien får forrang. |
| Funktion | Variabler, der er angivet i en funktion, deles ikke med andre funktioner eller scriptet. Hvis du opretter en funktionsomfangsvariabel med samme navn som en global eller scriptvariabel, opretter PowerShell en ny variabel i funktionsscopet. |
Seddel
Windows PowerShell ISE er ikke længere aktivt i funktionsudvikling og understøtter kun Windows PowerShell 5.1 og tidligere. Til udvikling af nye scripts anbefales Visual Studio Code med PowerShell-udvidelsen som det anbefalede scriptmiljø.
Seddel
Undgå at bruge det samme variabelnavn i forskellige scopes.
Ud over at gennemse en variabel i et område på højere niveau kan du også ændre denne variabel ved specifikt at referere til variablens omfang, når du ændrer den. Hvis du vil ændre en variabel for scriptområde fra en funktion, skal du bruge følgende syntaks:
$script:var = "Modified from function"
Undgå at ændre variabler mellem scopes, da det kan skabe forvirring. Angiv i stedet scriptomfangsvariablen til outputtet for funktionen. Hvis dataene i funktionen er i en variabel, kan du bruge Return() til at sende dem tilbage til scriptet.
Følgende er et eksempel på brug af Return() i slutningen af en funktion for at overføre en variabelværdi tilbage til scriptområdet:
Return($users)
Seddel
Hvis du bruger Return() i en funktion, føjes de angivne data til pipelinen af data, der returneres, men de erstatter ikke eksisterende data i pipelinen. Som en del af scriptudvikling skal du kontrollere nøjagtigt, hvilke data der returneres af en funktion.