Powershell ForEach Loop Statement Tutorial with Examples
ForEach is a PowerShell statement used to use iterate or loop over the given list, array or collection of the objects, strings, numbers, etc. ForEach on erittäin suosittu silmukkamekanismi, jossa voimme käyttää erilaisia tapauksia, kuten loop läpi tiedostoja, numeroita,merkkijonoja, prosesseja, jne. Powershell versio 4.0 tuo joitain suorituskykyparannuksia ForEach loopiin.
PowerShell Foreachin syntaksilla
Foreachin lauseella on seuraava syntaksi, jossa käytetään ITEMCOLLECTION ja CODE-BLOCK.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- kohde on yksittäinen arvo tai objekti, joka muuttuu jokaisessa iteraatiossa.
- kokoelma on joukko, kokoelma, arvojen luettelo tai objekteja, kuten 1,2,3,4.
- KOODILOHKO on lohko, jossa reaalioperaatio suoritetaan ja jossa käytetään yleensä kohdetta. Tämä lohko voi olla yksi tai useita rivejä.
Foreach kautta joukko merkkijonoja
yksinkertaisella tavalla, voimme iteroida yli annetun luettelon merkkijono joukko. Toistamme yli array nimeltä ”kaupungit”, joka sisältää useita kaupungin nimiä. Tulostamme jokaisen kaupungin nimen komennolla ”echo”kuten alla.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
voimme katso, että jokaisen kaupungin nimi on painettu PowerShell-päätteeseen yhdellä rivillä.
Foreach kautta kokoelma numeroita
edellisessä esimerkissä, olemme looped yli tietyn luettelon merkkijonoja. Voimme myös iteroida tai silmukoida numeroluettelon läpi. Luomme joukon, jonka nimi on numbers, ja iteroimme jokaisen alkionkin tässä numeroryhmässä.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
H2>$_ käyttö
käytettäessä joitakin cmdlet: iä ohjaamaan cmdlet: n ulostuloa keulaan, Voimme käyttää ”$” jokaiselle esineelle tai esineelle. Esimerkiksi, jos käytämme ”Get-Process” cmdlet jokaiselle alkiolle tai prosessille annetaan $ jokaisessa iteraatiossa. Voimme määrittää attribuutin kuten nimi $.Name ja tulostaa kuten alla.
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 luettelee tiedostoja ja kansioita, kuten dir MSDOS-komento. Tämä tuloste kirjoitetaan konsolille Echo – komennolla.
foreach($file in Get-ChildItem) {Echo $file}
foreach erityisten tiedostopäätteiden, kuten bat
kautta voimme erikseen luetella määritetyn laajennuksen. Laajennus yleensä antaa tiedostotyyppi kuten teksti, avi, mkv, mp3, doc jne. Tässä esimerkissä listataan vain *.bat tai Bat-tiedostot.
foreach($file in Get-ChildItem *.bat) {Echo $file}
voimme nähdä, että listataan vain sellaiset tiedostot kuin test.batjaautoexec.bat.
Foreach yli CSV-tiedoston
CSV-tiedostoja käytetään tallentamaan tekstidataa jäsennellysti. Voimme helposti foreach kunkin rivin CSV-tiedoston kuten alla. Tässä esimerkissä luemme IP CSV-tiedoston ja annamme foreach tulostamaan Powershell-konsolin.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}