about_Break

Letzte Aktualisierung: Mai 2014

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

Einführung hier einfügen.

THEMA

about_Break

KURZE BESCHREIBUNG

Beschreibt eine Anweisung, die Sie zum sofortigen Beenden von Foreach-, For-, While-, Do- oder Switch-Anweisungen verwenden können.

LANGE BESCHREIBUNG

Wenn eine Break-Anweisung in einer Schleife vorkommt, z. B. eine Foreach-, For-, Switch- oder While-Schleife, bewirkt die Break-Anweisung, dass Windows PowerShell die Schleife sofort beendet. In einem Switch-Konstrukt, das keine Schleife ist, bewirkt Break, dass Windows PowerShell den Switch-Codeblock beendet.

Eine Break-Anweisung kann eine Bezeichnung enthalten, mit der Sie eingebettete Schleifen beenden können. Eine Bezeichnung kann jedes Schleifenschlüsselwort in einem Skript angeben, z. B. Foreach, For oder While. Wenn Sie eine Bezeichnung verwenden, beendet Break die angegebene Schleife. Break beendet die angegebene Schleife unabhängig davon, in welcher Schleife sich die Break-Anweisung befindet.

Das folgende Beispiel zeigt, wie Sie eine Break-Anweisung zum Beenden eine For-Anweisung verwenden:

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

In diesem Beispiel beendet die Break-Anweisung die For-Schleife, wenn die $i-Variable gleich 1 ist. Obwohl die For-Anweisung „True“ ergibt, bis $i größer als 10 ist, erreicht Windows PowerShell die Break-Anweisung bei der erstmaligen Ausführung der For-Schleife.

Es ist üblicher, Break-Anweisung in einer Schleife zu verwenden, in der eine innere Bedingung erfüllt sein muss. Betrachten Sie das folgende Beispiel der Foreach-Anweisung:

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

In diesem Beispiel durchläuft die Foreach-Anweisung das $varB-Array. Jedes Mal, wenn der Codeblock ausgeführt wird, wird die $i-Variable um 1 erhöht. Die If-Anweisung wird bei den ersten beiden Ausführungen der Schleife als „false“ ausgewertet. Bei der dritten Ausführung der Schleife ist $i gleich 3, und die $val-Variable ist gleich 30. An dieser Stelle wird die Break-Anweisung ausgeführt und die Foreach-Schleife beendet.

Sie unterbrechen die anderen Schleifenanwendungen auf die gleiche Weise, wie Sie die Foreach-Schleife unterbrechen. Im folgenden Beispiel beendet die Break-Anweisung eine While-Anweisung, wenn eine DivideByZeroException-Ausnahme mithilfe der Trap-Anweisung abgefangen wird.

        $i = 3
        while ($true)
        {
            trap [DivideByZeroException] 
            {
                Write-Host "divide by zero trapped" 
                break
            }
            1 / $i--
        }

Eine Break-Anweisung kann eine Bezeichnung enthalten. Wenn Sie das Break-Schlüsselwort mit einer Bezeichnung verwenden, beendet Windows PowerShell die bezeichnete Schleife anstatt der aktuellen Schleife. Die Syntax für eine Bezeichnung lautet wie folgt (dieses Beispiel zeigt eine Beschriftung in einer While-Schleife):

        :myLabel while (<condition>) { <statement list>}

Die Bezeichnung ist ein Doppelpunkt, gefolgt von einem Namen, den Sie zuweisen. Die Bezeichnung muss das erste Token in einer Anweisung sein, und ihr muss das Schleifenschlüsselwort folgen, wie z. B. While.

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

Mit Break wird die Ausführung der bezeichneten Schleife beendet. In eingebetteten Schleifen hat dies ein anderes Ergebnis zur Folge als das Break-Schlüsselwort, wenn es alleine verwendet wird. In diesem schematischen Beispiel gibt es eine While-Anweisung mit einer For-Anweisung:

        :myLabel while (<condition 1>) 
        {
            for ($item in $items) 
            { 
                if (<condition 2>) { break myLabel } 
                $item = $x   # A statement inside the For-loop
            }
        }
        $a = $c  # A statement after the labeled While-loop

Wenn Bedingung 2 als „True“ ausgewertet wird, springt die Ausführung des Skripts zurück zur Anweisung nach der bezeichneten Schleife. Im Beispiel wird die Ausführung mit der Anweisung „$a = $c“ erneut gestartet.

Sie können viele bezeichnete Schleifen verschachteln, wie im folgenden schematischen Beispiel dargestellt.

        :red while (<condition1>)
        {
            :yellow while (<condition2>)
            {
                while (<condition3>)
                {
                    if ($a) {break}
                    if ($b) {break red}
                    if ($c) {break yellow}
                }
                # After innermost loop
            }
                # After \"yellow\" loop
        }
                # After \"red\" loop

Wenn die $b-Variable als „True“ ausgewertet wird, wird die Ausführung des Skripts nach der Schleife mit der Bezeichnung „red“ fortgesetzt. Wenn die $c-Variable als „True“ ausgewertet wird, wird die Ausführung der Skriptsteuerung nach der Schleife mit der Bezeichnung „yellow“ fortgesetzt.

Wenn die $a-Variable als „True“ ausgewertet wird, wird die Ausführung nach der innersten Schleife fortgesetzt. Es ist keine Bezeichnung ist erforderlich.

Durch Windows PowerShell gibt es keine Einschränkung, wie weit die Ausführung durch Bezeichnungen fortgesetzt werden kann. Die Bezeichnung kann sogar die Steuerung über Skript- und Funktionsaufrufgrenzen hinweg übergeben.

Das Break-Schlüsselwort wird verwendet, um das Switch-Konstrukt zu verlassen. Beispielsweise verwendet die folgende Switch-Anweisung Break-Anweisungen zum Testen der spezifischsten Bedingung:

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

            "word.*" 
            { 
                Write-Host "Match on the prefix" $_ 
                break
            }

            "w.*"
            {
                Write-Host "Match on at least the first letter" $_
                break 
            }
            
            default
            {
                Write-Host "No match" $_
                break
            }
        }

In diesem Beispiel wird die $var-Variable erstellt und mit einem Zeichenfolgenwert von „word2“ initialisiert. Die Switch-Anweisung verwendet die Regex-Klasse, um den Variablenwert zuerst mit dem Begriff „word2“ abzugleichen. (Die Regex-Klasse ist eine reguläre Ausdrucksklasse von Microsoft .NET Framework.) Da der Wert der Variablen und der ersten Test in der Switch-Anweisung übereinstimmen, wird der erste Codeblock in der Switch-Anweisung ausgeführt.

Wenn Windows PowerShell die erste Break-Anweisung erreicht, wird die Switch-Anweisung beendet. Wenn die vier Break-Anweisungen aus dem Beispiel entfernt werden, sind alle vier Bedingungen erfüllt. Dieses Beispiel verwendet die Break-Anweisung zum Anzeigen der Ergebnisse, wenn die spezifischste Bedingung erfüllt ist.

SIEHE AUCH

about_Comparison_Operator

about_Continue

about_For

about_Foreach

about_Switch

about_Throw

about_Trap

about_Try_Catch_Finally

about_While