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 ITEM
COLLECTION
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.bat
jaautoexec.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}