PowerShell: Mit Switch aus dem If-Else-Dickicht finden

Lesezeit
1 Minute
Bis jetzt gelesen

PowerShell: Mit Switch aus dem If-Else-Dickicht finden

10.07.2026 - 07:00
Veröffentlicht in:

Verschachtelte If-Else-Ketten wachsen mit jedem neuen Sonderfall unweigerlich zu einem PowerShell-Dickicht heran. Die Switch-Anweisung bringt Ordnung hinein und macht Skripte auf einen Blick lesbar.

Wer in der PowerShell Automatisierungsskripte schreibt, greift für bedingte Codeausführung meist zuerst zum If-Statement. Das funktioniert zuverlässig, solange nur wenige Bedingungen im Spiel sind. Kommen jedoch immer mehr Fallunterscheidungen hinzu, wuchern die If-Else-Blöcke schnell zu unübersichtlichen Ketten aus, die sich kaum noch warten lassen. An dieser Stelle spielt die Switch-Anweisung ihre Stärken aus: Sie bildet mehrere Fallunterscheidungen in einer kompakten, klar strukturierten Syntax ab und erhöht damit die Lesbarkeit erheblich.

Ein wesentlicher Unterschied zum If-Statement liegt im Abarbeitungsverhalten. Während If-Else nach dem ersten zutreffenden Zweig abbricht, prüft Switch standardmäßig alle Bedingungen durch und führt die Aktionen für jede zutreffende Bedingung aus. Wer dieses Verhalten nicht wünscht, unterbindet es gezielt mit dem Schlüsselwort "break" innerhalb eines Aktionsblocks. Praktisch ist zudem der "Default"-Block: Er greift immer dann, wenn keine der definierten Bedingungen zutrifft, und ersetzt so den abschließenden Else-Zweig.

Switch kann außerdem mehr als reine Wertevergleiche. Mit den Parametern "-Wildcard" und "-Regex" lassen sich auch Muster statt exakter Werte abgleichen, "-CaseSensitive" erzwingt bei Bedarf eine Unterscheidung von Groß- und Kleinschreibung. Übergibt man der Testexpression zudem ein Array, durchläuft Switch automatisch jedes einzelne Element und prüft es gegen die definierten Fälle, ganz ohne zusätzliche Schleifenkonstruktion. Das folgende Grundgerüst zeigt den Aufbau einer Switch-Anweisung mit Default-Fall:

switch (<test-expression>) {
<result1-to-be-matched> { <action-statement> }
<result2-to-be-matched> { <action-statement>; break }
Default { <action-statement> }
}

Für Admins, die häufig verschachtelte If-Konstrukte pflegen, lohnt sich der Umstieg auf Switch also gleich doppelt: Die Skripte werden kürzer und gleichzeitig deutlich wartungsfreundlicher.