Powershell ForEach Loop Statement Tutorial példákkal
ForEach
egy PowerShell utasítás, amelyet az adott lista, tömb vagy objektumok, karakterláncok, számok stb. ForEach egy nagyon népszerű hurok mechanizmus, ahol tudjuk használni a különböző esetekben, mint a hurok fájlok, számok, húrok, folyamatok, stb .. Powershell verzió 4.0 hoz néhány teljesítmény javulást a ForEach
hurok.
PowerShell ForEach Syntax
Foreach utasítás a következő szintaxis, ahol használjukITEM
COLLECTION
ésCODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- az elem egyetlen érték vagy objektum, amely minden iterációban változik.
- gyűjtemény egy tömb, gyűjtemény, értékek listája, vagy tárgyak, mint 1,2,3,4.
- kódblokk az a blokk, ahol a valódi művelet fut, amely általában az elemet használja. Ez a blokk lehet egy vagy több sor.
Foreach egy sor húrok
egy egyszerű módon, tudjuk iterálni az adott listát a string tömb. A “városok” nevű tömb felett iterálunk, amely több városnevet tartalmaz. Minden város nevét az alábbi “echo” paranccsal nyomtatjuk ki.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
nézze meg, hogy minden város nevét egyetlen sorban nyomtatják a PowerShell terminálra.
Foreach az előző példában a
számok gyűjteményén keresztül egy adott karakterlánc-listát hurkoltunk át. Azt is iterálni vagy hurok egy listát a számok. Létrehozunk egy numbers
nevű tömböt, majd ezt a számtömb minden egyes elemét megismételjük.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
h2>$_ usage
ha néhány parancsmagot használ a parancsmag kimenetének átirányításához az elülső oldalra, akkor minden elemhez vagy objektumhoz ” $ ” – t használhatunk. Például ,ha a “Get-Process”parancsmagot használjuk, minden egyes elem vagy folyamat a $
– hoz lesz hozzárendelve minden iterációban. Megadhatjuk a $.Name
attribútumot, majd az alábbiakhoz hasonlóan nyomtathatunk.
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
olyan fájlokat és mappákat sorol fel, mint a dir
MSDOS parancs. Ezt a kimenetet a Echo
paranccsal kell konzolra írni.
foreach($file in Get-ChildItem) {Echo $file}
foreach specifikus fájlkiterjesztéseken keresztül, mint például a bat
, kifejezetten felsorolhatjuk a megadott kiterjesztést. A kiterjesztés általában biztosítja a fájltípust, mint a szöveg, avi, mkv, mp3, doc stb. Ebben a példában csak a *.bat
vagy Bat fájlokat soroljuk fel.
foreach($file in Get-ChildItem *.bat) {Echo $file}
láthatjuk, hogy csak olyan fájlok lesznek felsorolva, mint atest.bat
és aautoexec.bat
.
Foreach felett CSV fájl
CSV fájlok tárolására használt szöveges adatok strukturált módon. Mi könnyen foreach minden sorban egy CSV fájl, mint az alábbiakban. Ebben a példában elolvasunk egy IP CSV fájlt, majd megadjuk aforeach
– nak a Powershell konzol nyomtatásához.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}