Powershell ForEach lus Statement Tutorial with Examples
ForEach
is een PowerShell statement dat gebruikt wordt om iterate of lus te gebruiken over de gegeven lijst, array of verzameling van de objecten, strings, getallen, enz. ForEach is een zeer populair loop mechanisme waar we verschillende gevallen kunnen gebruiken, zoals loop door bestanden, getallen, Strings, processen, enz. Powershell versie 4.0 brengt enkele prestatieverbeteringen aan deForEach
lus.
PowerShell ForEach syntaxis
foreach statement heeft de volgende syntaxis waar we ITEM
COLLECTION
en CODE-BLOCK
gebruiken.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- ITEM is een enkele waarde of object dat verandert tijdens elke iteratie.
- collectie is een array, verzameling, lijst met waarden, of objecten zoals 1,2,3,4.
- codeblok is het blok waar de echte operatie wordt uitgevoerd, die over het algemeen ITEM gebruikt. Dit blok kan enkele of meerdere regels zijn.
Foreach door een Array van Strings
op een eenvoudige manier kunnen we herhalen over de gegeven lijst van de string array. We itereren over de array met de naam “steden” die meerdere stadsnamen bevat. We zullen elke stadsnaam afdrukken met het commando “echo” zoals hieronder.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
kunnen we zien dat elke stadsnaam wordt afgedrukt naar de PowerShell terminal in een enkele regel.
Foreach door een verzameling getallen
In het vorige voorbeeld hebben we een lus over een bepaalde lijst van strings. We kunnen ook een lijst met getallen herhalen of doorlopen. We zullen een array aanmaken met de naam numbers
en herhalen over elk item in deze nummer array.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
$_ Usage
wanneer sommige cmdlets worden gebruikt om de uitvoer van cmdlet om te leiden naar de foreach kunnen we “$” gebruiken voor elk item of object. Als we bijvoorbeeld” Get-Process “cmdlet gebruiken, wordt elk item of proces toegewezen aan de $
in elke iteratie. We kunnen het attribuut opgeven zoals Name $.Name
en afdrukken zoals hieronder.
PS> Get-Process | ForEach-Object {$_.ProcessName}
We can also print multiple attributes in foreach by delimiting them with comma.
PS> Get-Process | ForEach-Object {$_.ProcessName, $_.ID}
Foreach Through Files
We can also loop through files by using Get-ChildItem
cmdlet. Get-ChildItem
toont bestanden en mappen zoals dir
MSDOS Commando. Deze uitvoer zal naar de console geschreven worden met het Echo
Commando.
foreach($file in Get-ChildItem) {Echo $file}
foreach via specifieke bestandsextensies zoals Bat
kunnen we de opgegeven extensie specifiek weergeven. De extensie zal over het algemeen het bestandstype zoals tekst, avi, mkv, mp3, doc enz. In dit voorbeeld zullen we alleen *.bat
of Bat-bestanden weergeven.
foreach($file in Get-ChildItem *.bat) {Echo $file}
We kunnen zien dat alleen bestanden zoals test.bat
enautoexec.bat
worden weergegeven.
Foreach Over CSV-bestand
CSV-bestanden worden gebruikt om tekstgegevens op een gestructureerde manier op te slaan. We kunnen gemakkelijk foreach in elke regel van een CSV-bestand zoals hieronder. In dit voorbeeld zullen we een IP CSV bestand lezen en aan de foreach
leveren om Powershell console af te drukken.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}