Powershell Foreach Loop Statement Tutorial Med Eksempler
ForEach
er En PowerShell-setning som brukes til å bruke iterere eller sløyfe over den gitte listen, array eller samling av objekter, strenger, tall, etc. ForEach er en veldig populær loop mekanisme der vi kan bruke forskjellige tilfeller som sløyfe gjennom filer, Tall, Strenger, Prosesser, etc. Powershell versjon 4.0 gir noen ytelsesforbedringer tilForEach
loop.
PowerShell Foreach Syntaks
Foreach setning har følgende syntaks der vi bruker ITEM
COLLECTION
og CODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- ELEMENT er en enkelt verdi eller objekt som endres over hver iterasjon.
- SAMLING er en matrise, samling, liste over verdier, eller objekter som 1,2,3,4.
- KODEBLOKK er blokken der den virkelige operasjonen kjører som vanligvis bruker ELEMENT. Denne blokken kan være enkelt eller flere linjer.
Foreach Gjennom En Rekke Strenger
på en enkel måte kan vi iterere over den oppgitte listen over strengarrayet. Vi itererer over arrayet kalt «byer» som inneholder flere bynavn. Vi vil skrive ut hvert bynavn med kommandoen» echo » som nedenfor.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
Vi kan se at hvert bynavn skrives ut til powershell-terminalen i en enkelt linje.
Foreach Gjennom En Samling Av Tall
i forrige eksempel har vi loopet over en gitt liste over strenger. Vi kan også iterere eller sløyfe gjennom en liste over tall. Vi vil lage en matrise som heter numbers
og iterere over hvert element i denne nummermatrisen.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
$_ usage
når du bruker noen cmdlets for å omdirigere utgangen av cmdlet til foreach, kan vi bruke «$» for hvert element eller objekt. For eksempel, hvis vi bruker «Get-Process» cmdlet hvert element eller prosess vil bli tildelt $
i hver iterasjon. Vi kan angi attributtet som Navn $.Name
og skriv ut 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 som dir
msdos kommando. Denne utgangen vil bli skrevet til konsoll med kommandoenEcho
.
foreach($file in Get-ChildItem) {Echo $file}
foreach gjennom bestemte filtyper som bat
vi kan spesifikt liste den angitte utvidelsen. Utvidelsen vil generelt gi filtypen som tekst, avi, mkv, mp3, doc etc. I dette eksemplet vil vi bare liste *.bat
eller Bat-filer.
foreach($file in Get-ChildItem *.bat) {Echo $file}
vi kan se at bare filer som test.bat
og autoexec.bat
vil bli oppført.
Foreach Over CSV-Fil
CSV-filer brukes til å lagre tekstdata på en strukturert måte. Vi kan enkelt foreach i hver linje AV EN CSV-fil som nedenfor. I dette eksemplet vil vi lese EN IP CSV-fil og gi tilforeach
for å skrive Ut Powershell-konsollen.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}