about_Switch

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Switch

KURZE BESCHREIBUNG

Beschreibt, wie Sie mit einem Switch mehrere If-Anweisungen behandeln können.

LANGE BESCHREIBUNG

Um in einem Skript oder einer Funktion zu überprüfen, ob eine bestimmte Bedingung vorliegt, verwenden Sie eine If-Anweisung. Eine If-Anweisung kann das Vorhandensein verschiedener Arten von Bedingungen überprüfen, beispielsweise ob bestimmte Variablenwerte oder Objekteigenschaften vorliegen.

Zur Überprüfung mehrerer Bedingungen verwenden Sie eine Switch-Anweisung. Eine Switch-Anweisung entspricht einer Reihe von If-Anweisungen, ist aber einfacher. Die Switch-Anweisung listet jede Bedingung sowie eine optionale Aktion auf. Wenn eine Bedingung zutrifft, wird die Aktion ausgeführt.

Eine einfache Switch-Anweisung hat folgendes Format:

        Switch (<test-value>)
        {
            <condition> {<action>}
            <condition> {<action>}
       }

Folgende Switch-Anweisung vergleicht beispielsweise den Testwert 3 mit jeder der angegebenen Bedingungen. Wenn der Testwert der Bedingung entspricht, wird die Aktion ausgeführt.

        PS> switch (3) 
         {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."}
            4 {"It is four."}
         } 
        It is three.

In diesem einfachen Beispiel wird der Wert mit jeder Bedingung der Liste verglichen, obwohl bereits eine Übereinstimmung für den Wert 3 vorliegt. Die folgende Switch-Anweisung hat zwei Bedingungen für den Wert 3. Sie zeigt, dass standardmäßig alle Bedingungen überprüft werden.

        PS> switch (3) 
         {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."}
            4 {"It is four."}
            3 {"Three again."}
         } 
        It is three.
        Three again.

Soll der Switch den Vergleich nach der ersten Übereinstimmung abbrechen, verwenden Sie die Break-Anweisung. Die Break-Anweisung beendet die Switch-Anweisung.

        PS> switch (3) 
         {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."; Break}
            4 {"It is four."}
            3 {"Three again."}
         } 
        It is three.

Wenn es sich beim Testwert um eine Datengruppe handelt, zum Beispiel um ein Array, werden alle Elemente der Datengruppe der Reihe nach ausgewertet. In den folgenden Beispielen wird zunächst der Testwert 4 und dann der Testwert 2 überprüft.

         PS> switch (4, 2) 
         {
            1 {"It is one." }
            2 {"It is two." }
            3 {"It is three." }
            4 {"It is four." }
            3 {"Three again."}
         } 
        It is four.
        It is two.

Wie das folgende Beispiel zeigt, gelten alle Break-Anweisungen für die gesamte Datengruppe, nicht für jeden einzelnen Wert. Die Switch-Anweisung wird durch die Break-Anweisung in der Bedingung für den Wert 4 abgebrochen.

         PS> switch (4, 2) 
         {
            1 {"It is one."; Break}
            2 {"It is two." ; Break }
            3 {"It is three." ; Break }
            4 {"It is four." ; Break }
            3 {"Three again."}
         } 
        It is four.

SYNTAX

Die vollständige Syntax einer Switch-Anweisung ist wie folgt:

        switch [-regex|-wildcard|-exact][-casesensitive] (<value>)

oder

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

gefolgt von

        { 
            "string"|number|variable|{ expression } { statementlist }
            default { statementlist } 
        }

Wenn diesbezüglich keine Parameter angegeben sind, führt Switch einen exakten Werteabgleich ohne Beachtung der Groß-/Kleinschreibung aus. Wenn es sich bei dem Wert um eine Datengruppe handelt, wird jedes Element der Reihe nach ausgewertet.

Eine Switch-Anweisung muss mindestens eine konditionale Anweisung enthalten.

Wenn der Wert mit keiner der Bedingungen übereinstimmt, wird die Default-Klausel ausgelöst. Diese entspricht der Else-Klausel einer If-Anweisung. Pro Switch-Anweisung ist nur eine Default-Klausel zulässig.

Switch hat die folgenden Parameter:

Regex

Führt einen Abgleich des Werts mit der Bedingung mittels eines regulären Ausdrucks aus. Wenn Sie Regex verwenden, werden Wildcard und Exact ignoriert. Ebenso wird dieser Parameter ignoriert, wenn es sich bei der Match-Klausel um keine Zeichenfolge handelt.

                           Example:
                           PS> switch ("fourteen") 
                               {
                                   1 {"It is one."; Break}
                                   2 {"It is two."; Break}
                                   3 {"It is three."; Break}
                                   4 {"It is four."; Break}
                                   3 {"Three again."; Break}
                                   "fo*" {"That's too many."}
                               } 

                           PS> switch -Regex ("fourteen") 
                               {
                                   1 {"It is one."; Break}
                                   2 {"It is two."; Break}
                                   3 {"It is three."; Break}
                                   4 {"It is four."; Break}
                                   3 {"Three again."; Break}
                                   "fo*" {"That's too many."}
                               }
                        That's too many.

Wildcard

Gibt an, dass es sich bei der Bedingung um eine Zeichenfolge mit Platzhalter handelt. Wenn Sie Wildcard verwenden, werden Regex und Exact ignoriert. Ebenso wird dieser Parameter ignoriert, wenn es sich bei der Match-Klausel um keine Zeichenfolge handelt.

Exact

Gibt an, dass der Wert exakt mit der Match-Klausel übereinstimmen muss, sofern es sich bei der Match-Klausel um eine Zeichenfolge handelt. Wenn Sie Exact verwenden, werden Regex und Wildcard ignoriert. Ebenso wird dieser Parameter ignoriert, wenn es sich bei der Match-Klausel um keine Zeichenfolge handelt.

CaseSensitive

Führt einen Abgleich unter Beachtung der Groß-/Kleinschreibung aus. Wenn es sich bei der Match-Klausel um keine Zeichenfolge handelt, wird dieser Parameter ignoriert.

Datei

Entnimmt die Eingabe aus einer Datei, statt aus einer value-Anweisung. Bei Angabe mehrerer File-Parameter wird nur der letzte verwendet. Jede Zeile der Datei wird von der Switch-Anweisung gelesen und ausgewertet.

Es sind auch mehrere Instanzen von Regex, Wildcard oder Exact zulässig. Allerdings ist nur der zuletzt verwendete Parameter wirksam.

Wenn der Wert mit mehreren Bedingungen übereinstimmt, wird die Aktion jeder dieser Bedingungen ausgeführt. Dieses Verhalten können Sie jedoch mit den Schlüsselwörtern Break oder Continue ändern.

Das Schlüsselwort Break bricht die Verarbeitung ab und beendet die Switch-Anweisung.

Das Schlüsselwort Continue setzt die Verarbeitung des aktuellen Werts und aller nachfolgenden Werte fort.

Wenn es sich bei der Bedingung um einen Ausdruck oder einen Skriptblock handelt, wird sie vor dem Vergleich mit dem Wert ausgewertet. Der Wert wird der automatischen Variablen $_ zugewiesen und steht dann dem Ausdruck zur Verfügung. Der Abgleich ist erfolgreich, wenn der Ausdruck true ergibt oder mit dem Wert übereinstimmt. Der Ausdruck wird in seinem eigenen Bereich ausgewertet.

Das Schlüsselwort "Default" gibt eine Bedingung an, die nur dann ausgewertet wird, wenn keine andere Bedingung mit dem Wert übereinstimmt.

Die Aktion einer jeden Bedingung ist unabhängig von den Aktionen der anderen Bedingungen. Die schließende geschweifte Klammer (}) einer Aktion gibt ein explizites Break an.

SIEHE AUCH

about_Break

about_Continue

about_If

about_Script_Blocks