A Kapcsoló szerkezet áttekintése és használata Windows PowerShell-szkriptekben

Befejezett

A Kapcsoló szerkezet hasonló ahhoz a Ha szerkezethez, amely több ElseIf-szakaszt tartalmaz. A Kapcsoló szerkezet egyetlen változót vagy elemet értékel ki több érték alapján, és mindegyik értékhez egy szkriptblokk tartozik. Az egyes értékek szkriptblokkja akkor fut, ha az érték megegyezik a változóval. Van egy alapértelmezett szakasz is, amely csak akkor fut, ha nincsenek egyezések.

A Kapcsoló szerkezet a következő szintaxist használja:

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" }
}

Az értékek egyeztetése mellett a Kapcsoló szerkezet a minták egyeztetésére is használható. A -wildcard paraméterrel a -like operátorral megegyező szintaxissal végezhet mintaegyezést. Másik lehetőségként használhatja a -regex paramétert az egyeztetés normál kifejezések használatával történő végrehajtásához.

Fontos tisztában lenni azzal, hogy mintaegyeztetés használatakor több egyezés is lehetséges. Ha több egyezés van, az összes egyező minta szkriptblokkjai futnak. Ez eltér a Ha szerkezettől, amelyben csak egy szkriptblokk fut.

Az alábbi példa mintaegyezést használ:

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" }
 }

A londoni vagy a vancouveri $ip hálózatok értékeinél két üzenet jelenik meg. Ha $ip a 10.x.x.x hálózaton ip-címet is tartalmaz, az üzenetek azt jelzik, hogy a számítógép a belső hálózaton van, és hogy a számítógép Londonban vagy Vancouverben található. Ha $ip nem IP-cím a 10.x.x.x hálózaton, az üzenet azt jelzi, hogy nincs a belső hálózaton.

Ha több értéket ad meg egy tömbben egy Kapcsoló szerkezethez, a rendszer kiértékeli a tömb minden elemét. Az előző példában, ha a változó $ip egy két IP-címmel rendelkező tömb volt, akkor mindkét IP-cím feldolgozásra kerül. A tömb minden eleméhez megfelelő műveleteket hajtanak végre.