Erklärt, wie eine switch-Anweisung zur Verarbeitung mehrerer (about_Switch)

   
# THEMA
about_Switch

# KURZBESCHREIBUNG
Erklärt, wie eine switch-Anweisung zur Verarbeitung mehrerer
if-Anweisungen verwendet wird.

# DETAILBESCHREIBUNG
Entscheidungen in einem Skript oder Programm können mithilfe einer if-
Anweisung getroffen werden. Diese Anweisung besagt: "Wenn diese
Bedingung zutrifft, führe diese Aktion aus. Andernfalls führe jene
Aktion aus." Sie können diesen Vorgang beliebig oft ausführen. Bei
einer langen Liste von Bedingungen kann die Verwendung einer
if-Anweisung jedoch unhandlich werden. In einer switch-Anweisung
können mehrere Bedingungen miteinander kombiniert werden. Wie bei
allen Verzweigungsanweisungen müssen Skriptblöcke in geschweifte
Klammern ("{}") eingeschlossen werden.

Eine Switch-Anweisung entspricht im Grunde einer Reihe von
if-Anweisungen. Der Ausdruck wird nacheinander mit jeder der
Bedingungen verglichen. Bei einer Übereinstimmung wird die mit dieser
Bedingung verbundene Aktion ausgeführt. Eine grundlegende
switch-Anweisung besitzt folgende Form:

PS> $a = 3
PS> switch ($a) {
1 {"Ergebnis ist eins."}
2 {"Ergebnis ist zwei."}
3 {"Ergebnis ist drei."}
4 {"Ergebnis ist vier."}
}

Ergebnis ist drei.

In diesem einfachen Beispiel wird ein Wert mit jeder Bedingung in
der Liste verglichen. Anschließend wird in der Aktion die
Zeichenfolge für die Übereinstimmung ausgegeben. Es kann jedoch
problematisch sein, alle Bedingungen zu prüfen. Beispiel:

PS> $tag = "tag5"
PS> switch ($tag){
tag1 {"Montag"; break}
tag2 {"Dienstag"; break}
tag3 {"Mittwoch"; break}
tag4 {"Donnerstag"; break}
tag5 {"Freitag"; break}
tag6 {"Samstag"; break}
tag7 {"Sonntag"; break}
tag5 {"Zu viele Tage"; break}
}

Freitag

Die Liste enthält zwei Bedingungen für "tag5". Durch die
break-Anweisung am Ende jeder Bedingung sucht die switch-Anweisung
bei einer Übereinstimmung jedoch nicht weiter, sondern führt die
zugehörige Aktion aus. Ohne die break-Anweisungen würden beide
Aktionen für "tag5" ausgeführt werden.

Wenn der in der switch-Anweisung ausgewertete Wert ein Array ist,
wird jedes Element im Array der Reihenfolge nach ausgewertet,
beginnend mit dem Element 0. Es muss mindestens ein Element
vorhanden sein, das mindestens einer Bedingung entspricht,
andernfalls wird ein Fehler ausgegeben. Wenn mehr als eine
default-Klausel vorhanden ist, wird ebenfalls ein Fehler ausgegeben.

Die vollständige Syntax der switch-Anweisung lautet wie folgt:

switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline )
oder

switch [-regex|-wildcard|-exact][-casesensitive] -file Dateiname

gefolgt von

{
"Zeichenfolge"|Zahl|Variable|{ Ausdruck } { Anweisungsliste }
default { Anweisungsliste }
}

Wenn keine Parameter angegeben werden, verhält sich die
Switch-Anweisung standardmäßig so, als ob eine genaue
Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung
gesucht wird. Wenn die Option "pipeline" ein Array ergibt, wird
jedes Element des Arrays in aufsteigender Offsetreihenfolge
(beginnend bei 0) ausgewertet.

Der Switch-Codeblock muss mindestens ein bedingtes Element
enthalten und darf nur eine default-Klausel enthalten. Wenn mehr
als eine default-Klausel enthalten ist, wird eine "ParseException"
ausgelöst.

Für die Switch-Anweisung können folgende Parameter verwendet werden:

Regex Gibt an, dass die Übereinstimmungsklause l,
wenn es sich um eine Zeichenfolge handelt,
als regulärer Ausdruck behandelt wird.
Bei Verwendung dieses Parameters werden
die Optionen "Wildcard" und "Exact" deaktiviert.
Wenn die Übereinstimmungsklausel keine Zeichenfolge
ist, wird dieser Parameter ignoriert.

Wildcard Gibt an, dass die Übereinstimmungsklausel,
wenn es sich um eine Zeichenfolge handelt,
als Platzhalterzeichenfolge behandelt wird.
Bei Verwendung dieses Parameters werden die
Optionen "Regex" und "Exact" deaktiviert.
Wenn die Übereinstimmungsklausel keine
Zeichenfolge ist, wird dieser Parameter ignoriert.

Exact Gibt an, dass die Übereinstimmungsklause l,
wenn es sich um eine Zeichenfolge handelt,
genau übereinstimmen muss. Bei Verwendung
dieses Parameters werden die Optionen "Wildcard" und
"Regex" deaktiviert. Wenn die Übereinstimmungsklausel
keine Zeichenfolge ist, wird dieser Parameter ignoriert.

CaseSensitive Wenn die Übereinstimmungsklausel eine Zeichenfolge
ist, wird diese zur Berücksichtigung der Groß-
und Kleinschreibung geändert. Wenn die
Übereinstimmungsklausel keine Zeichenfolge ist,
wird dieser Parameter ignoriert.

File Gibt an, dass die Eingabe nicht aus einer Anweisung,
sondern aus einer Datei (oder einem gleichwertigen Objekt)
übernommen werden soll. Bei Angabe mehrerer File-Parameter
wird der letzte Parameter verwendet. Jede Zeile der Datei
wird gelesen und durchläuft den switch-Block.

Die Optionen "Regex", "Wildcard" und "Exact" dürfen mehrfach
verwendet werden. Allerdings richtet sich das Verhalten nach dem
letzten Parameter.

Das Schlüsselwort "Break" gibt an, dass keine weitere
Verarbeitung erfolgt und dass die Switch-Anweisung beendet wird.

Das Schlüsselwort "Continue" gibt an, dass die Verarbeitung für
das aktuelle Token fortgesetzt und das nächste Token in den
Bedingungen ausgewertet wird. Wenn keine Tokens verfügbar sind,
wird die Switch-Anweisung beendet.

Für den Block "{ Ausdruck }" kann ein Codeblock angegeben werden,
der während des Vergleichs ausgewertet wird. Das aktuelle Objekt
wird an die automatische Variable "$_" gebunden und ist während
der Auswertung des Ausdrucks verfügbar. Ein Vergleich gilt als
Übereinstimmung, wenn der Ausdruck "True" ergibt. Dieser Ausdruck
wird in einem neuen Bereich ausgewertet.

Das Schlüsselwort "Default" in der switch-Anweisung gibt an, dass der
Codeblock nach diesem Schlüsselwort ausgeführt werden soll, wenn keine
Übereinstimmungen gefunden werden. Ein Programmfluss von Block zu
Block ist nicht zulässig, da die schließende Klammer ("}") in der
Verbundliste einem expliziten "break" entspricht.

Wenn mehrere Übereinstimmungen gefunden werden, wird für jede
Übereinstimmung der zugehörige Ausdruck ausgeführt. Dies kann mit
den Schlüsselwörtern "Break" und "Continue" verhindert werden,
indem keine weiteren Vergleiche ausgeführt werden.

SIEHE AUCH
about_Break
about_Continue
about_If
about_Script_Blocks

C:\Windows>powershell get-help about_Throw -full

ColorConsole [Version 1.7.1000] PowerShell 2.0-Export
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2014 Microsoft Corporation.

OS: Windows 10, 8.1, 8, 7, Vista / Windows Server 2016, 2012, 2008
»»»» ColorConsole









... Windows-10




Windows 10 How To

... Windows 10 FAQ
... Windows 10 How To




PowerShell: Erklärt, wie eine switch-Anweisung zur Verarbeitung mehrerer

HTTP: ... PS_Windows/de/about_Switch.htm
0.406
12883

Bei Windows 7 DSL (PPPoE) Internet gemeinsam nutzen?

 /

Kann ich meinen Diascanner auch mit Win Scan zu PDF verwenden?

 /

Testen Sie Ihren Monitor, ob alles OK, oder nicht OK ist!

 /

Vista Service Pack 2, wo finde ich den Windows Download!

 /

Den Windows 11, 10, 8.1 Lizenzschlüssel per Befehlszeile auslesen/anzeigen!

 /

Änderbare Schriftgröße und Schriftfarbe in jeder Registerkarte der cmd.exe!

 /

What is svchost.exe on Windows?

 /

Hilfe, die Grafikkarte hat 1 GB Grafikspeicher und hat mir bei Win-7 noch 2 weitere GB vom Arbeitsspeicher geklaut?

 /

Disable and Enable Column in Explorer Listview of Q-Dir!

 /

The appdata folder on Windows 11, 10, ...!

 /

Kann ich alle Listen und Ordnerinhalte aus der Explorer Ansicht drucken?

 /

Locate Direct X in Windows 10!

 /