Revizuirea și utilizarea construcției Comutator în scripturile Windows PowerShell
Construcția Switch este similară cu o construcție If care are mai multe secțiuni ElseIf . Constructul Comutator evaluează o singură variabilă sau element în raport cu mai multe valori și are un bloc de script pentru fiecare valoare. Blocul de script pentru fiecare valoare este rulat dacă acea valoare se potrivește cu variabila. Există, de asemenea, o secțiune implicită care rulează numai dacă nu există potriviri.
Construcția Switch utilizează următoarea sintaxă:
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" }
}
Pe lângă valorile potrivite, construcția Comutator poate fi utilizată și pentru a potrivi modele. Puteți utiliza parametrul metacaractere pentru a efectua potrivirea modelelor utilizând aceeași sintaxă ca și operatorul -like. Alternativ, puteți utiliza parametrul -regex pentru a efectua potrivirea utilizând expresii regulate.
Este important să fiți conștienți de faptul că atunci când utilizați potrivirea modelelor, sunt posibile mai multe potriviri. Când există mai multe potriviri, blocurile de script pentru toate modelele de potrivire sunt executate. Aceasta este diferită de o construcție If în care se execută un singur bloc de script.
Următorul exemplu folosește potrivirea modelelor:
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" }
}
Pentru valorile de $ip pe rețelele din Londra sau Vancouver, vor fi afișate două mesaje. Dacă $ip include o adresă IP în rețeaua 10.x.x.x, mesajele vor indica faptul că computerul se află în rețeaua internă și că computerul se află fie în Londra, fie în Vancouver. Dacă $ip nu este o adresă IP din rețeaua 10.x.x.x, mesajul indică faptul că nu se află în rețeaua internă.
Dacă furnizați mai multe valori într-o matrice unei construcții Switch , fiecare element din matrice este evaluat. În exemplul anterior, dacă variabila $ip era o matrice cu două adrese IP, atunci ambele adrese IP ar fi procesate. Vor fi efectuate acțiunile adecvate pentru fiecare element din matrice.