PowerShell – SWITCH

PowerShellHeute kümmern wir uns um eine PowerShell Funktion mit dem Namen “Switch”.

In PowerShell, oder generell in der Programmierung, gibt es viele Wege und Varianten auf ein Ereignis oder Ergebnis dementsprechend zu reagieren. Also zB: Wenn ein Wert “1” ist soll Aktion “A” passieren, bei Wert “2” soll Aktion “B” passieren, bei Wert “3”….. usw.

Es gibt hier die Möglichkeiten mit einer IF Abfrage, wobei das bei vielen Werten meist sehr kompliziert wird. Daher gibt es das SWITCH Kommando.

Die Aufgabe

Ich habe mir ein Beispiel einfallen lassen, welches hoffentlich leicht zu verstehen ist. Stellen wir uns vor wir wollen dem User mitteilen, wie schnell er auf dem jeweiligen Straßenabschnitt fahren darf.

Im Ortsgebiet sind 50 KM/h erlaubt, auf der Autobahn 130 KM/h usw.

Somit sind unsere Werte Autobahn, Bundesstrasse, Ortsgebiet und Wohngebiert, bei diesen wollen wir dem dementsprechende Warnung ausgeben.

Die Lösung

Wir definieren eine Variable $Strasse, die uns die aktuelle Straße übergibt, und auf die wir die richtige Mitteilung zurückliefern.

$Strasse=”Ortsgebiet”

Jetzt kommt der Teil mit dem SWITCH

switch ($Strasse)
{
Autobahn {“Sie dürfen hier mit maximal 130 KM/h fahren”}
Bundesstrasse {“Sie dürfen hier mit maximal 100 KM/h fahren”}
Ortsgebiet {“Sie dürfen hier mit maximal 50 KM/h fahren”}
Wohnsiedlung {“Sie dürfen hier mit maximal 30 KM/h fahren”}
default {“Unbekannte Strasse, achten Sie auf Ihre Geschwindigkeit”}
}

Wir starten den Switch mit der Variable $Strasse, auf diese wird geachtet und je nach Input darauf reagiert.

Sollte die Straße unbekannt sein, ist ganz zum Schluss ein Default Wert definiert

Wie ich finde, ist dies einfacher zu schreiben als eine IF Schleife mit so vielen Abfragen, also verwende ich ab ca. 3-4 Werten immer einen Switch, anstatt einer IF Schleife.

Michael Seidl aka Techguy

1 thought on “PowerShell – SWITCH”

  1. Pingback: Meine PowerShell Scripts zum Download » TechGuy

Leave a Comment

Your email address will not be published. Required fields are marked *

*