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