Powershell ForEach Loop Statement Tutorial med exempel
ForEach
är ett PowerShell-uttalande som används för att använda iterate eller loop över den givna listan, matrisen eller samlingen av objekt, strängar, siffror etc. ForEach är en mycket populär loop mekanism där vi kan använda olika fall som loop genom filer, siffror, strängar, processer, etc. Powershell version 4.0 ger några prestandaförbättringar tillForEach
loop.
PowerShell ForEach Syntax
Foreach uttalande har följande syntax där vi använderITEM
COLLECTION
ochCODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- objekt är ett enda värde eller objekt som ändras över varje iteration.
- samling är en matris, samling, lista över värden eller objekt som 1,2,3,4.
- kodblock är blocket där den verkliga operationen körs som vanligtvis använder objekt. Detta block kan vara enstaka eller flera rader.
Foreach genom en rad strängar
på ett enkelt sätt kan vi iterera över den givna listan över strängmatrisen. Vi itererar över matrisen med namnet” städer ” som har flera stadsnamn. Vi skriver ut varje stadsnamn med kommandot” echo ” som nedan.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
Vi kan se att varje stadsnamn skrivs ut till PowerShell-terminalen i en enda rad.
förvar och en genom en samling siffror
i föregående exempel har vi loopat över en given lista med strängar. Vi kan också iterera eller slinga genom en lista med siffror. Vi kommer att skapa en array med namnet numbers
och iterera över varje objekt i denna nummermatris.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
$_ användning
När du använder vissa cmdlets för att omdirigera produktionen av cmdlet till foreach kan vi använda ”$” för varje objekt eller objekt. Till exempel, om vi använder ”Get-Process” cmdlet varje objekt eller process kommer att tilldelas $
I varje iteration. Vi kan ange attributet som namn $.Name
och skriva ut som nedan.
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
listar filer och mappar somdir
MSDOS-kommando. Denna utgång kommer att skrivas till konsolen med kommandotEcho
.
foreach($file in Get-ChildItem) {Echo $file}
foreach genom specifika filtillägg som Bat
kan vi specifikt lista det angivna tillägget. Tillägget kommer i allmänhet att ge filtypen som text, AVI, mkv, mp3, doc etc. I det här exemplet listar vi bara *.bat
eller Bat-filer.
foreach($file in Get-ChildItem *.bat) {Echo $file}
vi kan se att endast filer som test.bat
och autoexec.bat
kommer att listas.
Foreach över CSV-fil
CSV-filer används för att lagra textdata på ett strukturerat sätt. Vi kan enkelt foreach i varje rad i en CSV-fil som nedan. I det här exemplet läser vi en IP CSV-fil och tillhandahåller foreach
för att skriva ut Powershell-konsolen.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}