Wanneer u PowerShell-scripts gebruikt om systemen te beheren of bulktaken te verwerken, zult u ongetwijfeld behoefte hebben aan het gebruik van een lusconstructie als onderdeel van uw scripts. Er zijn veel soorten lussen beschikbaar in PowerShell, en een daarvan is de for-lus. De PowerShell for-lus kan ervoor zorgen dat dezelfde reeks opdrachten snel wordt uitgevoerd op meerdere items en consistente resultaten oplevert.
In dit artikel leert u wat de for-lus in PowerShell is, begrijpt u de syntaxis en wat een for-lusverklaring inhoudt. U leert ook van de voorbeelden enkele verschillende manieren waarop u de for-lus kunt gebruiken.
Begrip van de PowerShell for-lusverklaring en aanduidingen
De PowerShell for-lus wordt vaak gebruikt wanneer het aantal keren (iteratietelling) dat een opdracht of proces moet worden uitgevoerd, al bekend is. Een voorbeeld zou zijn wanneer u alleen een subset van waarden in een array wilt verwerken (bijv. slechts 10 van de X aantal items verwerken).
Het gebruik van een for-lus geeft meer controle over limieten en voorwaarden wanneer de code moet stoppen. Dit in tegenstelling tot de foreach-lus of de ForEach-Object
-cmdlet, waarbij de iteratie stopt nadat het laatste item in de collectie is verwerkt.
Hieronder staat de syntaxis van de for-lusverklaring ter referentie.
Zoals u kunt zien in de bovenstaande syntaxis, kan de PowerShell for-lusverklaring worden opgesplitst in vier aanduidingen die u moet kennen. Dit zijn de Initieel, Voorwaarde, Herhaal, en Verklaringslijst aanduidingen.
- De Initiële aanduiding is waar je een startwaarde opgeeft. Deze waarde wordt slechts één keer gelezen door de verklaring. Typisch wijzen scripts deze variabele toe met een waarde van nul.
- De Voorwaarde aanduiding specificeert de limiet of voorwaarde om te bepalen of de lus moet blijven draaien of eindigen. De expressie gebruikt in deze aanduiding evalueert naar waar.
- De Herhaal aanduiding accepteert meerdere opdrachten. De opdrachten die hierin worden verstrekt, worden uitgevoerd nadat elke lus zich herhaalt en voordat de Voorwaarde opnieuw wordt geëvalueerd. Scripts gebruiken dit typisch om een expressie te bieden om ofwel de waarde in de Initiële aanduiding te verhogen of te verlagen.
- Tenslotte, de Verklaringslijst aanduiding is waar de hoofdcode die je wilt uitvoeren zal worden geplaatst. De code binnen deze aanduiding wordt herhaald in een lus totdat de Voorwaarde een waarde van
$False
retourneert.
Understanding the PowerShell For Loop Execution Flow
Om verder te begrijpen hoe de PowerShell for-lus werkt, moet je vertrouwd raken met de uitvoeringsstroom ervan. Een for-lus is in eerste instantie een proces van vier stappen, en wordt daarna een proces van drie stappen na de initiële uitvoering. Om dit verder uit te leggen, blijf het algoritme hieronder lezen.
STAP 1
Aan het begin van de for-lus verklaring, wordt de Initiële waarde gelezen en opgeslagen in het geheugen.
Voorbeeld: $num = 0
STAP 2
De for-lusverklaring evalueert het booleanresultaat van de expressie binnen de Voorwaarde placeholder. Als het resultaat $false
is, wordt de for-lus beëindigd. Als het resultaat $true
is, gaat de for-lus verder naar de volgende stap.
Voorbeeld: $num -lt 10
STAP 3
PowerShell voert de code uit binnen de Verklaringenlijst placeholder. Er kunnen één of meer opdrachten, scriptblokken of functies zijn.
Voorbeeld: "Ik tel $num "
STAP 4
In deze stap wordt de expressie in de Herhaal placeholder uitgevoerd, die de huidige waarde van de Initieel placeholder zal bijwerken. Vervolgens gaat de flow terug naar Stap 2.
Voorbeeld: $num++
Het gebruik van de PowerShell For-lus (Voorbeelden)
In de volgende secties zullen enkele voorbeelden worden gegeven van hoe de for-lus op verschillende manieren kan worden gebruikt. Deze voorbeelden kunnen al dan niet praktisch of bruikbaar zijn in het echte leven zoals ze zijn. Maar de technieken die je leert kunnen je begeleiden bij het gebruik van de for-lus mocht je een echte behoefte hebben om dit te doen.
Nu je een idee hebt hoe de for-lus werkt, is het tijd om te zien hoe dit allemaal samenkomt met behulp van basiscode.
Het verkrijgen van een reeks getallen
De onderstaande code geeft de string "Ik tel $num"
herhaaldelijk weer op de console, te beginnen vanaf 1 tot de waarde van $num
10 bereikt.
Als je de bovenstaande code kopieert en plakt in je PowerShell-sessie om deze uit te voeren, laat onderstaande schermafbeelding je het resultaat zien.

Strings Samenvoegen
De for-lus instructie is niet beperkt tot alleen wiskundige expressies zoals optellen, aftrekken of vermenigvuldigen. Het kan ook worden gebruikt om tekenreekswaarden samen te voegen.
Het onderstaande voorbeeld zal de letter “x” blijven herhalen, waarbij elke regel één karakter meer bevat dan de vorige, totdat het aantal tekens in de regel 30 bereikt.
Zoals je kunt zien, werd de waarde van $x
geïnitieerd met ''
, wat nul tekens bevat. De limiet op basis van de voorwaarde is tot het aantal tekens in de waarde van $x
30 bereikt. Na elke iteratie wordt één extra letter “x” toegevoegd aan de waarde van $x
.
De onderstaande uitvoer toont het verwachte resultaat wanneer de bovenstaande code wordt uitgevoerd in PowerShell.

Teksten Samenvoegen met Meerdere Beginselen en Herhaal Expressies
De Initiële en Herhaal aanduidingen in de for-lus instructie kunnen meerdere expressies accepteren.
Met behulp van de code in het vorige voorbeeld kan de code worden aangepast om een nieuwe expressie toe te voegen in de Herhaal aanduiding om een willekeurige kleur te kiezen. De willekeurige kleur wordt vervolgens gebruikt als de voorgrondkleur van de te tonen tekenreeks in de console.
Zoals je kunt zien in de eerste regel, wordt een array gedefinieerd met namen van kleuren. De for-lus operatie zal willekeurig een kleurnaam uit deze array kiezen.
Merk op dat de Initiële en Herhaal aanduidingen nu twee expressies bevatten. Elke expressie is ingesloten in een haakje en gescheiden door een komma.
Zodra de aangepaste code wordt uitgevoerd in PowerShell, wordt het verwachte resultaat hieronder getoond.

Voortgang weergeven
Misschien wel het meest gebruikelijke gebruik van een for-lus is het tonen van voortgangsindicatoren. Dit wordt meestal toegepast bij het uitvoeren van taken voor bulkitems die mogelijk tijd kosten om te voltooien. Zoals bijvoorbeeld het maken van een rapport voor alle postvakgroottes in uw Exchange-organisatie, of het bijwerken van kenmerken van meerdere gebruikers in Active Directory.
De onderstaande voorbeeldcode toont u de basismanier om de voortgang van 1 naar 100% weer te geven. Zoals u zult zien, is de initiële waarde van de $counter
1, en geeft de voorwaarde aan dat deze lus zal blijven lopen totdat de waarde van $counter
100 bereikt.
Wanneer u de bovenstaande code uitvoert in PowerShell, zou u een vergelijkbare uitvoer moeten zien, zoals hieronder getoond.

Een afteltimer weergeven
De volgende code laat zien hoe u de for-lus kunt gebruiken om een afteltimer weer te geven. Deze afteltimer toont alleen de resterende seconden, te beginnen bij 10.
Als u het startnummer wilt wijzigen, hoeft u alleen de waarde van de variabele $seconds
in de Begin-plaatsaanduiding te wijzigen.
Het uitvoeren van de bovenstaande code in PowerShell resulteert in de onderstaande voorbeelduitvoer.

Een afteltimer weergeven (Geneste for-lus)
Wat als je de afteltimer wilt weergeven met het formaat minuten:seconden
? De geneste for-lus kan worden gebruikt om dat te bereiken. Een geneste for-lus wordt eenvoudig gedefinieerd als een for-lus binnen een andere for-lus en zo verder.
De onderstaande voorbeeldcode bevat twee for-lusverklaringen.
De eerste for-lus behandelt het aftellen van het minuut deel van de timer. Zoals je kunt zien, is er een $minutes
variabele voor de for-lus waar je het aantal minuten moet aangeven waarvan de for-lus zal aftellen.
De tweede for-lus behandelt het aftellen van het seconden deel van de timer. Na elke iteratie pauzeert de lus 1 seconde voordat hij verdergaat. Dit zal doorgaan totdat de waarde van $seconds
0 bereikt.
Wanneer de bovenstaande code wordt uitgevoerd, ziet de afteltimer er als volgt uit.

Het bepalen van een priemgetal
Een PowerShell for-lus is ook een goede keuze voor wiskundige bewerkingen. In dit voorbeeld wordt de for-lus gebruikt om te bepalen of een gegeven getal een priemgetal is.
A prime number is a number that is only divisible by 1 and N, where N is the number itself. For example, if the value of N is 7, then N divided by 1
is 7 divided by 1
.
De onderstaande script, wanneer uitgevoerd, zal het volgende doen:
- De gebruiker vragen om een getal in te voeren.
- Voer deling uit met het ingevoerde getal als dividend, en de delers zijn de getallen van 2 tot het ingevoerde getal minus 1. Dit betekent dat als de ingevoerde waarde 7 is, de delers respectievelijk 2, 3, 4, 5 en 6 zijn.
- Als het quotiënt een geheel getal is, betekent dit dat het ingevoerde getal geen priemgetal is en vervolgens zal de for-lus worden beëindigd.
- Als het quotiënt geen geheel getal is, betekent dit dat het ingevoerde getal een priemgetal is.
Kopieer en bewaar dit script als isPrime.ps1
Zodra je het script isPrime.ps1
hebt opgeslagen, voer het uit in PowerShell om te testen. Zie hieronder het voorbeeld van de uitvoer.

Samenvatting
De PowerShell for-lus brengt geen verrassingen met zich mee in vergelijking met hoe de for-lus werkt in andere talen – en dat maakt het gemakkelijker aan te passen als je niet nieuw bent met het concept.
In dit artikel heb je de basisprincipes van de PowerShell for-lusverklaring geleerd. Je hebt kennis gemaakt met de syntaxis, logica, stroom en hebt zelfs geleerd van verschillende voorbeelden hoe je het kunt gebruiken voor verschillende doeleinden.
Onthoud dat zelfs als er andere soorten lussen zijn in PowerShell, het onrechtvaardig is om te zeggen dat de ene beter is dan de andere. Het hangt allemaal af van het doel van de code en de voorkeur van degene die de code schrijft.
Met de kennis die je hebt opgedaan uit dit artikel, zou je in staat moeten zijn manieren te vinden om de for-lus meer toe te passen om je gebruikelijke tijdrovende taken te automatiseren.