THEMA
    about_Break

KURZBESCHREIBUNG
    Beschreibt eine Anweisung, mit der Sie Foreach-, For-, While-, Do- und 
    Switch-Anweisungen sofort beenden können.


DETAILBESCHREIBUNG
    Wenn eine Break-Anweisung in einer Schleife angezeigt wird, z. B. 
    in einer Foreach-, For-, Switch- oder While-Schleife, weist die 
    Break-Anweisung Windows PowerShell an, die Schleife sofort zu 
    beenden. In einem Switch-Konstrukt, das keine Schleife darstellt, 
    weist die Break-Anweisung Windows PowerShell an, den 
    Switch-Codeblock zu beenden.
 
 
    Eine Break-Anweisung kann eine Bezeichnung enthalten, mit der Sie 
    eingebettete Schleifen beenden können. Mit einer Bezeichnung kann ein 
    beliebiges Schleifenschlüsselwort in einem Skript angegeben werden, 
    z. B. "Foreach", "For" oder "While". Wenn eine Bezeichnung verwendet 
    wird, beendet die Break-Anweisung die angegebene Schleife. Die 
    Break-Anweisung beendet die angegebene Schleife, wobei es keine Rolle 
    spielt, in welcher Schleife die Break-Anweisung enthalten ist.


    Im folgenden Beispiel wird veranschaulicht, wie mit einer 
    Break-Anweisung eine For-Anweisung beendet wird:


        for($i=1; $i -le 10; $i++)
        {
            Write-Host $i
            break
        }


    In diesem Beispiel beendet die Break-Anweisung die For-Schleife, 
    wenn die Variable "$i" gleich 1 ist. Obwohl die For-Anweisung so 
    lange mit True ausgewertet wird, bis "$i" größer als 10 ist, erreicht 
    Windows PowerShell die Break-Anweisung bei der ersten Ausführung der 
    For-Schleife. 

    Eine Break-Anweisung wird häufiger in einer Schleife verwendet, 
    in der eine innere Bedingung erfüllt werden muss. Betrachten Sie 
    beispielsweise die folgende Foreach-Anweisung:


        $i=0
        $varB = 10,20,30,40
        foreach ($val in $varB)
        {  
            $i++
            if ($val -eq 30)
            {
                break
            }  
        }
        Write-Host "30 in Arrayposition $i gefunden"


    In diesem Beispiel durchläuft die Foreach-Anweisung das Array 
    "$varB". Bei jedem Durchlauf des Codeblocks wird der Wert der 
    Variablen "$i" um 1 erhöht. Die If-Anweisung ergibt bei den 
    ersten beiden Durchläufen der Schleife "False". Beim dritten 
    Durchlauf der Schleife entspricht "$i" dem Wert 3, und die 
    Variable "$val" entspricht 30. An diesem Punkt wird die 
    Break-Anweisung ausgeführt, und die Foreach-Schleife wird beendet.


    Das Beenden der anderen Schleifenanweisungen entspricht dem 
    Beenden der Foreach-Schleife. Im folgenden Beispiel wird eine 
    While-Anweisung mit der Break-Anweisung beendet, wenn die 
    Ausnahme "DivideByZeroException" mithilfe der Trap-Anweisung 
    abgefangen wird.


        $i = 3
        while ($true)
        {
            trap [DivideByZeroException] 
            {
                Write-Host "Division durch 0 abgefangen" break
            }
            1 / $i--
        }


    Eine Break-Anweisung kann eine Bezeichnung enthalten. Wenn Sie 
    das Schlüsselwort "Break" mit einer Bezeichnung verwenden, wird 
    von Windows PowerShell nicht die aktuelle Schleife, sondern die 
    Schleife mit Bezeichnung beendet. Eine Bezeichnung weist die 
    folgende Syntax auf (in diesem Beispiel wird eine Bezeichnung 
    in einer While-Schleife veranschaulicht):


        :myLabel while (<Bedingung>) { <Anweisungsliste>}


    Die Bezeichnung besteht aus einem Doppelpunkt, auf den der von Ihnen 
    zugewiesene Name folgt. Die Bezeichnung muss das erste Token in einer 
    Anweisung sein, und anschließend muss das Schleifenschlüsselwort 
    (z. B. "While") angegeben sein.
 

    In Windows PowerShell können nur Schleifenschlüsselwörter wie 
    "Foreach", "For" und "While" eine Bezeichnung aufweisen.


    Durch "Break" wird die Ausführung aus der Schleife mit Bezeichnung 
    verschoben. In eingebetteten Schleifen liefert dies ein anderes 
    Ergebnis als bei der alleinigen Verwendung des Break-Schlüsselworts. 
    In diesem schematischen Beispiel sind eine While-Anweisung und eine 
    For-Anweisung enthalten:
 

        :myLabel while (<Bedingung 1>) 
        {
            for ($item in $items) 
            { 
                if (<Bedingung 2>) { break myLabel } 
                $item = $x  # Eine Anweisung innerhalb der For-Schleife
            }
        }
        $a = $c # Eine Anweisung nach der While-Schleife mit Bezeichnung


    Wenn Bedingung 2 mit True ausgewertet wird, wird bei der 
    Ausführung des Skripts bis zur Anweisung nach der Schleife mit 
    Bezeichnung gesprungen. Die Ausführung wird wieder mit der 
    Anweisung "$a = $c" fortgesetzt. 


    Sie können eine Vielzahl von Schleifen mit Bezeichnung 
    schachteln, wie im folgenden schematischen Beispiel veranschaulicht.


        :red while (<Bedingung1>)
        {
            :yellow while (<Bedingung2>)
            {
                while (<Bedingung3>)
                {
                    if ($a) {break}
                    if ($b) {break red}
                    if ($c) {break yellow}
                }
                # Nach der innersten Schleife
            }
                # Nach der Schleife "yellow"
        }
                # Nach der Schleife "red"


    Wenn die Variable "$b" True ergibt, wird die Ausführung des 
    Skripts nach der Schleife fortgesetzt, die die Bezeichnung "red" 
    aufweist. Wenn die Variable "$c" mit True ausgewertet wird, wird 
    die Ausführung des Skriptsteuerelements nach der Schleife 
    fortgesetzt, die die Bezeichnung "yellow" aufweist.


    Wenn die Variable "$a" True ergibt, wird die Ausführung nach der 
    innersten Schleife fortgesetzt. Eine Bezeichnung ist nicht 
    erforderlich.


    In Windows PowerShell gelten keine Einschränkungen in Bezug auf 
    die Weite, nach der die Ausführung durch Bezeichnungen 
    fortgesetzt werden kann. Durch Bezeichnungen kann sogar die 
    Steuerung über die Grenzen von Skripts und Funktionsaufrufen 
    hinweg übergeben werden.


    Das Break-Schlüsselwort wird verwendet, um das Switch-Konstrukt 
    zu verlassen. In der folgenden Switch-Anweisung werden 
    beispielsweise Break-Anweisungen verwendet, um die spezifischste 
    Bedingung zu ermitteln:


        $var = "word2"
        switch -regex ($var) 
        {
            "word2" 
            {
                Write-Host "Exact" $_ 
                break
            } 

            "word.*" 
            { 
                Write-Host "Übereinstimmung bei Präfix" $_ break
            }

            "w.*"
            {
                Write-Host "Übereinstimmung bei mindestens dem ersten 
                Buchstaben" $_ break 
            }
            
            default
            {
                Write-Host "Keine Übereinstimmung" $_
                break
            }
        }


    In diesem Beispiel wird die Variable "$var" erstellt und mit dem 
    Zeichenfolgenwert "word2" initialisiert. Mithilfe der 
    Regex-Klasse vergleicht die Switch-Anweisung den Variablenwert 
    zunächst mit dem Term "word2". (Die Regex-Klasse ist eine 
    Microsoft .NET Framework-Klasse mit regulären Ausdrücken.) Da der 
    Wert der Variablen und der erste Test in der Switch-Anweisung 
    übereinstimmen, wird der erste Codeblock in der Switch-Anweisung 
    ausgeführt.


    Wenn Windows PowerShell auf die erste Break-Anweisung trifft, wird die 
    Switch-Anweisung beendet. Wenn die vier Break-Anweisungen aus dem 
    Beispiel entfernt wurden, sind alle vier Bedingungen erfüllt. In 
    diesem Beispiel wird die Break-Anweisung verwendet, um die Ergebnisse 
    anzuzeigen, wenn die spezifischste Bedingung erfüllt ist. 


SIEHE AUCH  
    about_Comparison_Operators
    about_For
    about_Foreach 
    about_Switch
    about_While




Inhaltsverzeichnis