foreach Loop Statement Tutorial med eksempler
ForEach
er en Kraftshell erklæring, der bruges til at bruge iterate eller loop over den givne liste, array eller samling af objekter, strenge, tal osv. ForEach er en meget populær loop-mekanisme, hvor vi kan bruge forskellige sager som loop gennem filer, tal, strenge, processer osv. 4.0 bringer nogle forbedringer af ydeevnen tilForEach
loop.
Strømshell foreach syntaks
Foreach-erklæring har følgende syntaks, hvor vi brugerITEM
COLLECTION
ogCODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- element er en enkelt værdi eller objekt, der ændres over hver iteration.
- samling er en array, samling, liste over værdier eller objekter som 1,2,3,4.
- kodeblok er den blok, hvor den virkelige operation kører, som generelt bruger element. Denne blok kan være enkelt eller flere linjer.
Foreach gennem en række strenge
på en enkel måde kan vi gentage over den givne liste over strengarrayet. Vi gentager over arrayet “cities”, der indeholder flere bynavne. Vi udskriver hvert bynavn med kommandoen “echo” som nedenfor.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
Vi kan se, at hvert bynavn udskrives til strømshellterminalen i en enkelt linje.
Foreach gennem en samling af tal
i det foregående eksempel har vi sløjfet over en given liste over strenge. Vi kan også gentage eller sløjfe gennem en liste over tal. Vi opretter et array med navnet numbers
og gentager over hvert element i dette nummer array.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
$_ usage
når du bruger nogle cmdlets til at omdirigere output fra cmdlet til foreach, kan vi bruge “$” for hvert element eller objekt. For eksempel, hvis vi bruger “Get-Process” cmdlet hvert element eller proces vil blive tildelt $
i hver iteration. Vi kan angive attributten som navn $.Name
og udskrive som nedenfor.
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
vil liste Filer og mapper somdir
MSDOS kommando. Denne udgang vil blive skrevet til konsol med kommandoenEcho
.
foreach($file in Get-ChildItem) {Echo $file}
foreach gennem specifikke filtypenavne som Bat
Vi kan specifikt liste den angivne udvidelse. Udvidelsen vil generelt give filtypen som tekst, avi, mkv, mp3, doc osv. I dette eksempel vil vi kun liste *.bat
eller Bat-filer.
foreach($file in Get-ChildItem *.bat) {Echo $file}
Vi kan se, at kun filer somtest.bat
ogautoexec.bat
vil blive opført.
Foreach Over CSV-fil
CSV-filer bruges til at gemme tekstdata på en struktureret måde. Vi kan nemt foreach i hver linje i en CSV-fil som nedenfor. I dette eksempel læser vi en IP CSV-fil og leverer til foreach
for at udskrive Strømshell-konsol.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}