Ü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 Muster abgleichen. Sie können den -Wildcard Parameter verwenden, um den Musterabgleich mit derselben Syntax wie der -like Operator auszuführen. Alternativ können Sie den Parameter -Regex mit regulären Ausdrücken abgleichen.

Wenn Sie Mustervergleiche verwenden, sind mehrere Übereinstimmungen möglich. Wenn mehrere Übereinstimmungen vorhanden sind, werden alle übereinstimmenden Musterskriptblöcke ausgeführt. Dies unterscheidet sich von einem If-Konstrukt , in 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 war, werden beide IP-Adressen verarbeitet und die entsprechenden Aktionen für jedes Element ausgeführt.