Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Kort beskrivning
Beskriver hur continue-instruktionen omedelbart returnerar programflödet överst i en programloop, en switch-instruktion eller en trap-instruktion.
Lång beskrivning
Med continue-instruktionen kan du avsluta det aktuella kontrollblocket men fortsätta körningen i stället för att avsluta helt. Uttalandet stöder etiketter.
En etikett är ett namn som du tilldelar till en instruktion i ett skript.
Att använda 'continue'-kommandot i loopar
En omärkt continue-instruktion returnerar omedelbart programflödet överst i den innersta loopen som styrs av en for, foreach, doeller while-instruktion. Den aktuella iterationen av loopen avslutas och loopen fortsätter med nästa iteration.
I följande exempel återgår programflödet till toppen av while-loopen om variabeln $ctr är lika med 5. Därför visas alla tal mellan 1 och 10 förutom 5:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
När du använder en for-loop fortsätter körningen vid <Repeat>-instruktionen följt av <Condition>-testet. I exemplet nedan sker inte en oändlig loop eftersom minskning av $i inträffar efter nyckelordet continue.
# <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--
}
}
Att använda en märkt fortsättning i en slinga
En märkt continue-instruktion terminerar körningen av iterationen och överför kontrollen till den riktade omgivande iterationen eller switch-instruktionsetiketten.
I följande exempel avslutas den innersta for när $condition är True och iterationen fortsätter med den andra for-loopen på 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
}
}
}
}
Använda 'continue' i en switch-sats
En omärkt continue-instruktion inom en switch avslutar körningen av den aktuella switch iterationen och överför kontrollen överst i switch för att hämta nästa indataobjekt.
När det finns ett enda indataobjekt avslutar continue hela switch-instruktionen.
När switch indata är en samling testar switch varje element i samlingen.
continue avslutar den aktuella iterationen och switch fortsätter med nästa element.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Användninga av fortsätt i en trap-instruktion
Om den sista instruktionen som körs i huvudblocket som en trap-instruktion är continue, ignoreras det fångade felet tyst och körningen fortsätter med instruktionen direkt efter den som orsakade trap att inträffa.
Använd inte fortsätt utanför en loop, växel eller trap
När continue används utanför en konstruktion som direkt stöder den (loopar, switch, trap), söker PowerShell upp i anropsstacken efter en omslutande konstruktion. Om den inte hittar en omslutande konstruktion, avslutas det nuvarande körutrymmet tyst.
Det innebär att funktioner och skript som använder en continue utanför en omslutande konstruktion som stöder den kan oavsiktligt avsluta sina anropare.
Om du använder continue inuti en pipeline, som ett skriptblock ForEach-Object, avslutas inte bara själva pipelinen, utan hela körningsytan kan också avslutas.