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