Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Beschrijft hoe de continue-instructie de programmastroom onmiddellijk naar de bovenkant van een programmalus, een switch-instructie of een trap-instructie retourneert.
Lange beschrijving
De continue-instructie biedt een manier om het huidige besturingsblok af te sluiten, maar de uitvoering voort te zetten in plaats van volledig af te sluiten. De verklaring ondersteunt labels.
Een label is een naam die u toewijst aan een instructie in een script.
Doorgaan gebruiken in lussen
Een niet-gelabelde continue instructie retourneert onmiddellijk de programmastroom naar de bovenkant van de binnenste lus die wordt beheerd door een for, foreach, doof while instructie. De huidige iteratie van de lus wordt beëindigd en de lus wordt voortgezet met de volgende iteratie.
In het volgende voorbeeld keert de programmastroom terug naar de bovenkant van de while lus als de variabele $ctr gelijk is aan 5. Als gevolg hiervan worden alle getallen tussen 1 en 10 weergegeven, met uitzondering van 5:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
Wanneer u een for-lus gebruikt, wordt de uitvoering voortgezet op de <Repeat> instructie, gevolgd door de <Condition>-test. In het onderstaande voorbeeld treedt er geen oneindige lus op omdat het verlagen van $i plaatsvindt na het continue trefwoord.
# <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--
}
}
Een gelabeld 'continue' in een lus gebruiken
Een continue-instructie beëindigt de uitvoering van de iteratie en draagt de controle over aan de beoogde omsluitende iteratie of het switch-instructielabel.
In het volgende voorbeeld wordt de binnenste for beëindigd als $conditionTrue is en de herhaling wordt voortgezet met de tweede for lus op 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
}
}
}
}
Doorgaan gebruiken in een switch-instructie
Een niet-gelabelde continue instructie binnen een switch beëindigt de uitvoering van de huidige switch iteratie en draagt het besturingselement over naar het begin van de switch om het volgende invoeritem op te halen.
Wanneer er één invoeritem is, beëindigt continue de hele switch-instructie. Wanneer de switch invoer een verzameling is, test de switch elk element van de verzameling. De continue sluit de huidige iteratie af en de switch gaat verder met het volgende element.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Doorgaan gebruiken in een trapinstructie
Als de laatste instructie die in de body wordt uitgevoerd een trap-instructie is continue, wordt de vastgelopen fout stilzwijgend genegeerd en wordt de uitvoering voortgezet met de instructie direct na de instructie die trap heeft veroorzaakt.
Gebruik niet doorgaan buiten een lus, switch of trap
Wanneer continue buiten een constructie wordt gebruikt die deze rechtstreeks ondersteunt (lussen, switch, trap), zoekt PowerShell hogerop in de aanroepstack naar een omhullende constructie. Als er geen omsluitconstructie kan worden gevonden, wordt de huidige runspace ongemerkt beëindigd.
Dit betekent dat functies en scripts die zonder opzet een continue buiten een ondersteunende constructie gebruiken, hun aanroepersonbedoeld kunnen beëindigen.
Als continue u binnen een pijplijn, zoals een ForEach-Object scriptblok, niet alleen de pijplijn afsluit, wordt de volledige runspace mogelijk beëindigd.