Überprüfen und Verwenden des Switch-Konstrukts in Windows PowerShell-Skripts

Abgeschlossen

Das Switch-Konstrukt ähnelt einem If-Konstrukt mit mehreren ElseIf-Abschnitten. Das Switch-Konstrukt wertet eine einzelne Variable oder ein einzelnes Element für mehrere Werte aus und weist einen Skriptblock für jeden Wert auf. Der Skriptblock für jeden Wert wird ausgeführt, wenn dieser Wert mit der Variable übereinstimmt. Es gibt außerdem einen Standardabschnitt, der nur ausgeführt wird, wenn keine Übereinstimmungen vorhanden sind.

Das Switch-Konstrukt verwendet die folgende Syntax:

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

Zusätzlich zu übereinstimmenden Werten kann das Switch-Konstrukt auch zum Musterabgleich verwendet werden. Sie können den Parameter -wildcard verwenden, um Musterabgleich durchzuführen, indem Sie dieselbe Syntax wie für den -like-Operator verwenden. Alternativ können Sie den Parameter -regex verwenden, um Abgleich mithilfe regulärer Ausdrücke durchzuführen.

Es ist wichtig zu beachten, dass beim Verwenden des Musterabgleichs mehrere Übereinstimmungen möglich sind. Wenn mehrere Übereinstimmungen vorhanden sind, werden die Skriptblöcke für alle übereinstimmenden Muster ausgeführt. Dies unterscheidet sich von einem If-Konstrukt, bei dem nur ein Skriptblock ausgeführt wird.

Im folgenden Beispiel wird Musterabgleich verwendet:

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

Für Werte von $ip in den Netzwerken London oder Vancouver werden zwei Nachrichten angezeigt. Wenn $ip eine IP-Adresse im 10.x.x.x.x-Netzwerk enthält, geben die Nachrichten an, dass sich der Computer im internen Netzwerk und zwar entweder in London oder in Vancouver befindet. Wenn $ip keine IP-Adresse im 10.x.x.x.x-Netzwerk ist, gibt die Nachricht an, dass er sich nicht im internen Netzwerk befindet.

Wenn Sie mehrere Werte in einem Array an ein Switch-Konstrukt übergeben, wird jedes Element im Array ausgewertet. Wenn die Variable $ip im vorherigen Beispiel ein Array mit zwei IP-Adressen wäre, würden beide IP-Adressen verarbeitet. Die für jedes Element passenden Aktionen im Array würden ausgeführt.