Gennemse og brug Switch-konstruktionen i Windows PowerShell-scripts
Den switch--konstruktion svarer til en If-konstruktion, der har flere ElseIf sektioner. Den Switch--konstruktion evaluerer en enkelt variabel eller et enkelt element i forhold til flere værdier og har en scriptblok for hver værdi. Scriptblokken for hver værdi køres, hvis denne værdi svarer til variablen. Der er også en standardsektion, der kun kører, hvis der ikke er nogen forekomster.
Switch--konstruktionen bruger følgende syntaks:
Switch ($choice) {
1 { Write-Host "You selected menu item 1" }
2 { Write-Host "You selected menu item 2" }
3 { Write-Host "You selected menu item 3" }
Default { Write-Host "You did not select a valid option" }
}
Ud over at matche værdier kan Switch-konstruktionen også matche mønstre. Du kan bruge parameteren -Wildcard til at udføre mønstergenkendelse ved at bruge samme syntaks som operatoren -like . Alternativt kan du bruge parameteren -Regex til at matche ved hjælp af regulære udtryk.
Når du bruger mønstermatchning, er flere matches mulige. Når der er flere matches, kører alle matchende mønster-scriptblokke. Dette adskiller sig fra en If-konstruktion , hvor kun ét scriptblok kører.
I følgende eksempel bruges mønstermatch:
Switch -Wildcard ($ip) {
"10.*" { Write-Host "This computer is on the internal network" }
"10.1.*" { Write-Host "This computer is in London" }
"10.2.*" { Write-Host "This computer is in Vancouver" }
Default { Write-Host "This computer is not on the internal network" }
}
For værdier af $ip på London- eller Vancouver-netværk vises der to meddelelser. Hvis $ip indeholder en IP-adresse på 10.x.x.x-netværket, angiver meddelelserne, at computeren er på det interne netværk, og at computeren befinder sig i enten London eller Vancouver. Hvis $ip ikke er en IP-adresse på 10.x.x.x-netværket, angiver meddelelsen, at den ikke er på det interne netværk.
Hvis du angiver flere værdier i en matrix til en Switch konstruktion, evalueres hvert element i matrixen. I det forrige eksempel, hvis variablen $ip var et array med to IP-adresser, ville begge IP-adresser blive behandlet, og de relevante handlinger blive kørt for hvert element.