PowerShell is een krachtige scripttaal die veel functies biedt voor automatisering en het beheer van op Windows gebaseerde systemen. Een van de meest gebruikte constructies is de PowerShell while
-lus.
Maak je geen zorgen als je vastzit in een eindeloze lus terwijl je PowerShell-scripting leert. Laat de PowerShell while
-lus je leiden naar je grote ontsnapping. En in deze tutorial ga je terug naar de basisprincipes van werken met while
-lussen in PowerShell terwijl je je scripts schrijft.
Lees verder om je PowerShell-scriptingvaardigheden naar een hoger niveau te tillen!
Vereisten
Deze tutorial zal een hands-on demonstratie zijn. Zorg ervoor dat je het volgende hebt om mee te doen:
- A Windows machine – This tutorial uses Windows 10.
- Windows PowerShell 5.0 of hoger geïnstalleerd – Deze tutorial maakt gebruik van PowerShell 7.
- A user account with administrator privileges.
Uitvoeren van enkele voorwaardelijke while
-lussen
Een van de eenvoudigste soorten while
-lus is het type met een enkele voorwaarde. In tegenstelling tot de If
-verklaring voert dit type lus een reeks opgegeven commando’s uit zolang een gespecificeerde voorwaarde waar is. Wanneer ‘False’ wordt geretourneerd, wordt de lus onderbroken en wordt de uitvoering voortgezet met de rest van het script.
Hieronder staat de syntaxis voor een enkele voorwaardelijke while
-lus:
- Het eerste dat opvalt, is het gebruik van haakjes. De voorwaarde moet tussen haakjes staan, terwijl het codeblok een reeks PowerShell-opdrachten is die worden uitgevoerd terwijl de voorwaarde waar is.
- Het tweede dat opvalt, is dat de voorwaarde een booleaanse waarde moet retourneren, die wordt geëvalueerd als True of False.
Voer de onderstaande code uit, waarbij de waarde van $val
begint bij 0
en telkens met 1
wordt verhoogd wanneer het codeblok wordt uitgevoerd totdat de waarde van de variabele $val
gelijk is aan 3
.
Wanneer $val
een waarde van 3
bereikt, wat de voorwaarde False maakt, wordt de lus onderbroken en wordt de uitvoering voortgezet met de rest van het script.

Het uitvoeren van een PowerShell While-lus met ingebouwde variabelen ($true
/$false
)
Het vorige voorbeeld, waarbij voorwaarden worden gebruikt in de while
-lus, werkt prima. Maar je kunt ook PowerShell’s ingebouwde variabelen gebruiken, zoals $true
en $false
, om een While
-lus te maken.
De onderstaande syntaxis voert uit totdat $true
niet langer $true
is. Met andere woorden, de lus blijft voor altijd draaien. Maar je moet altijd een manier opnemen om uit een oneindige lus te breken. Anders zit je er voor altijd aan vast. Je leert later in deze tutorial meer over hoe je kunt breken uit een lus met behulp van break
en continue
.
Voer het onderstaande codeblok uit, dat voor altijd blijft draaien en de waarde van $i
naar de console print.
Druk nu op Ctrl+C om uit de lus te breken. Deze lus verbruikt veel systeembronnen, dus wees voorzichtig bij het gebruik ervan.

while
loop with PowerShell’s built-in ($true
) variableHet uitvoeren van Multi-Conditionele While
-lussen
Naast enkelvoudige voorwaardelijke while
-lussen, kunt u ook meer voorwaarden toevoegen aan while-lussen. Net als bij de enkelvoudige voorwaardelijke while
-lus moeten de voorwaarden een Booleaanse waarde retourneren, ofwel Waar of Onwaar.
Hieronder staat de syntaxis voor een meer-voorwaardelijke while
-lus, vergelijkbaar met de syntaxis voor een enkelvoudige voorwaardelijke while
-lus. Het belangrijkste verschil is dat u meerdere voorwaarden kunt opnemen die gescheiden zijn door de volgende operatoren:
- EN (
-and
) – Beide voorwaarden moeten waar zijn. - OF (
-or
) (Eén van de voorwaarden kan waar zijn).
Voer de onderstaande code uit, die blijft lussen zolang $val
niet gelijk is aan (-ne
) 3
-en
$i
niet gelijk is aan (-ne
) 5
.
Wanneer beide variabelen hun respectievelijke voorwaarden bereiken, wordt de lus onderbroken en wordt de uitvoering voortgezet met de rest van het script.

Uitvoeren van een while
-lus met EN-operator

while
loop with AND operatorVoer nu de onderstaande code uit, die de gebruiker vraagt naar hun leeftijd, opgeslagen in de variabele $leeftijd
.
Als de gebruiker een getal invoert dat kleiner is dan (-lt
) 1
of geen getal is (-nomatch
), wordt de gebruiker opnieuw gevraagd om een geldig getal in te voeren. Deze werkwijze is handig om gebruikers meerdere kansen te geven om geldige invoer te geven.
In de onderstaande uitvoer kun je zien dat de gebruiker drie keer werd gevraagd om hun leeftijd in te voeren, als volgt:
- De eerste keer voerde de gebruiker ten in, wat geen getal is.
- De tweede keer voerde de gebruiker 0 in, wat onder 1 ligt.
- De derde keer voerde de gebruiker 10 in, wat een geldige leeftijd is.

while
loop with the OR operatorHet gebruik van BREAK- en CONTINUE-sleutelwoorden in while-lussen
Je hebt gezien hoe while
-lussen flexibiliteit toevoegen aan je PowerShell-script. Maar om de uitvoering van je while-lussen beter te beheersen, voeg je de sleutelwoorden break
en continue
toe.
Bijvoorbeeld, als je slechts een bepaald aantal items in een array wilt verwerken, kun je het BREAK-sleutelwoord gebruiken om de lus te verlaten wanneer het gewenste aantal items is verwerkt.
Deze sleutelwoorden functioneren als volgt:
Keyword | Function |
---|---|
break | Immediately exits the loop and continues execution with the rest of the script. |
continue | Skips over the remaining code block in the current iteration of the loop and continues with the next iteration. |
Voer de onderstaande code uit, die door een array van 10 items loopt.
In de onderstaande code controleert de if
-verklaring de waarde van $i
. Als de waarde van $i
5
is, slaat het continue
-sleutelwoord de resterende code in de lus over en gaat door met de volgende iteratie. Als de waarde van $i
8
is, verlaat het break
-sleutelwoord de lus en gaat verder met de rest van het script.
Anders drukt de while
-lus af (Write-Host
) en verhoogt de waarde van de variabele $i
met 1
.
Zoals je kunt zien in de output hieronder, heeft de lus de vijfde en achtste items in de array overgeslagen. De while
-lus heeft alle andere items in de array verwerkt en is na het bereiken van het achtste item beëindigd.

while
loop with break
and continue
keywordsHet beperken van de tijd dat een While-lus wordt uitgevoerd
Meestal wil je misschien de hoeveelheid tijd beperken dat een lus wordt uitgevoerd. Misschien probeer je verbinding te maken met een externe server. In dat geval kun je de server de tijd geven om te reageren voordat je de lus afsluit door het Start-Sleep
cmdlet te gebruiken binnen je while
-lus.
De Start-Sleep
cmdlet pauzeert de uitvoering van het script gedurende een opgegeven periode.
Voer de onderstaande code uit om de huidige datum en tijd te krijgen en op te slaan Get-Date
in de variabele $startTime
. De while
-lus blijft draaien zolang de huidige datum/tijd minder is dan 10
seconden van de waarde die is opgeslagen in $startTime
.
Tijdens het uitvoeren van de while
-lus wordt een bericht afgedrukt terwijl de Start-Sleep
cmdlet de uitvoering van het script pauzeert gedurende 1
seconde.
Het onderstaande codeblok is slechts een sjabloon voor wat je eigenlijk in de praktijk zou gebruiken. Je kunt meer code binnen de lus plaatsen zoals nodig.
Hieronder zie je dat de lus is blijven draaien gedurende 10 seconden voordat deze de lus verlaat.

while
loop runsConclusie
PowerShell while
-lussen komen van pas bij het omgaan met complexe concepten om vastlopen in een lus te voorkomen of terwijl je je scripts schrijft. En in deze tutorial heb je veel manieren geleerd om met while
-lussen te werken voor flexibelere en krachtigere scripts.
Met deze nieuwe kennis is de sky the limit. Dus waarom niet het gebruik van logische operators en trefwoorden maximaliseren om taken te automatiseren met je scripts?