about_Continue
Kurze Beschreibung
Beschreibt, wie die continue
Anweisung den Programmfluss sofort an den Anfang einer Programmschleife, einer switch
Anweisung oder einer trap
Anweisung zurückgibt.
Lange Beschreibung
Die continue
Anweisung bietet eine Möglichkeit, den aktuellen Kontrollblock zu beenden, aber die Ausführung fortzusetzen, anstatt vollständig zu beenden. Die Anweisung unterstützt Bezeichnungen.
Eine Bezeichnung ist ein Name, den Sie einer Anweisung in einem Skript zuweisen.
Verwenden von "Weiter" in Schleifen
Eine nicht bezeichnete continue
Anweisung gibt den Programmfluss sofort an den Anfang der innersten Schleife zurück, die durch eine for
, foreach
, oder do
while
eine Anweisung gesteuert wird. Die aktuelle Iteration der Schleife wird beendet, und die Schleife wird mit der nächsten Iteration fortgesetzt.
Im folgenden Beispiel wird der Programmfluss an den Anfang der while
Schleife zurückgegeben, wenn die $ctr
Variable gleich 5 ist. Daher werden alle Zahlen zwischen 1 und 10 mit Ausnahme von 5 angezeigt:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
Bei Verwendung einer for
Schleife wird die Ausführung an der <Repeat>
Anweisung fortgesetzt, gefolgt vom <Condition>
Test. Im folgenden Beispiel tritt keine endlose Schleife auf, da die Dekrementierung nach $i
dem continue
Schlüsselwort erfolgt.
# <Init> <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
Write-Host -Object $i
if ($i -eq 5)
{
continue
# Will not result in an infinite loop.
$i--
}
}
Verwenden eines beschrifteten Vorgangs in einer Schleife
Eine beschriftete continue
Anweisung beendet die Ausführung der Iteration und überträgt die Steuerung an die gezielte umschließende Iterations- oder switch
Anweisungsbezeichnung.
Im folgenden Beispiel wird der innerste for
Wert beendet, wenn $condition
"True" ist und die Iteration mit der zweiten for
Schleife bei .labelB
:labelA for ($i = 1; $i -le 10; $i++) {
:labelB for ($j = 1; $j -le 10; $j++) {
:labelC for ($k = 1; $k -le 10; $k++) {
if ($condition) {
continue labelB
} else {
$condition = Update-Condition
}
}
}
}
Verwenden von "Continue" in einer Switch-Anweisung
Eine nicht bezeichnete continue
Anweisung innerhalb einer switch
beendet die Ausführung der aktuellen switch
Iteration und überträgt das Steuerelement an den Oberen Rand des switch
Eingabeelements, um das nächste Eingabeelement abzurufen.
Wenn ein einzelnes Eingabeelement continue
vorhanden ist, wird die gesamte switch
Anweisung beendet.
Wenn es sich bei der switch
Eingabe um eine Sammlung handelt, werden die switch
einzelnen Elemente der Auflistung getestet. Die continue
aktuelle Iteration wird beendet, und das switch
nächste Element wird fortgesetzt.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Verwenden von "Continue" in einer Trap-Anweisung
Wenn die endgültige Anweisung, die im Textkörper ausgeführt wird, eine trap
Anweisung ist continue
, wird der abgefangene Fehler im Hintergrund ignoriert, und die Ausführung wird mit der Anweisung fortgesetzt, die unmittelbar nach dem, der aufgetreten ist trap
.
Verwenden Sie den Vorgang nicht außerhalb einer Schleife, eines Schalters oder einer Trap
Wenn continue
außerhalb eines Konstrukts verwendet wird, das es direkt unterstützt (Schleifen, switch
, ), trap
sucht PowerShell den Aufrufstapel für ein eingeschlossenes Konstrukt. Wenn ein eingeschlossenes Konstrukt nicht gefunden werden kann, wird der aktuelle Runspace ruhig beendet.
Dies bedeutet, dass Funktionen und Skripts, die versehentlich eine continue
außerhalb eines eingeschlossenen Konstrukts verwenden, das es unterstützt, versehentlich ihre Aufrufer beenden können.
Die Verwendung continue
in einer Pipeline, z. B. ein ForEach-Object
Skriptblock, beendet nicht nur die Pipeline, er beendet möglicherweise den gesamten Runspace.