Személyes eszközök
Keresés

 

A InfoWiki wikiből

(Változatok közti eltérés)
(Foreach-Object)
Aktuális változat (2009. június 24., 18:19) (lapforrás)
(uploaded)
 
(11 közbeeső változat nincs mutatva)
1. sor: 1. sor:
 +
== Foreach-Object ==
== Foreach-Object ==
14. sor: 15. sor:
== Szintaktika ==
== Szintaktika ==
-
'''ForEach-Object [-process] <ScriptBlock[]> [-inputObject <psobject>] [-b egin <scriptblock>] [-end <scriptblock>] [<CommonParameters>]  
+
'''ForEach-Object [-process] <ScriptBlock[]> [-inputObject <psobject>] [-begin <scriptblock>] [-end <scriptblock>] [<CommonParameters>]  
'''
'''
 +
 +
Látható, hogy a Foreach-Object-nek három szkriptblokkot lehet megadni paraméterként: az első szkriptblokkban szereplő utasítás(oka)t a ciklus elvégzése alatt, a második szkriptblokkot a ciklus kezdése előtt, a harmadik szkriptblokk utasításait pedig a ciklus befejeztével hajtja végre.
 +
 +
'''Most nézzük meg az egyes paramétereket külön-külön.'''([ ] között írt paraméterek nem kötelezőek):
 +
 +
'''-process <ScriptBlock[]>''': egy kötelező paraméter, mely meghatározza azt a szkriptblokkot, amit mindegyik bemenő objektumra alkalmaz.
 +
 +
'''[-inputObject <psobject>]''': Egy olyan objektumot vár, amit az első szkriptblokk, meghatároz a paraméterében. Olyan vátozót kell írni,  ami tartalmazza ezt az objektumot, vagy olyan parancsot/kifejezést adjunk meg, ami az objektumot adja eredményül.
 +
 +
'''[-begin <scriptblock>]''': meghatározza azt a szkript-blokkot, amit végrehajtunk, mielőtt feldolgoznánk az input-objektumokat. Vagyis ezáltal a paraméter által meghatározott utasítássorozatot fogjuk kezdésként végrehajtani.
 +
 +
'''[-end <scriptblock>]''': ezt pedig a Foreach-Object ciklusa után fogjuk végrehajtani.
 +
 +
'''[<CommonParameters>]''': az az paraméter, amelyet minden cmdlet alkalmazhat. A Foreach-Object a következő általános paramétereket használhatja:
 +
-Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutVariable.
 +
 +
== A Foreach object és a foreach kulcsszó ==
 +
 +
A Powershellben kettő '''foreach''' létezik. Az első a '''Foreach-Object''' egyik '''alias'''a, ugyanúgy használjuk, mint a '''Foreach-Object'''-et.
 +
A másik az egy kulcszó, használata különbözik a '''Foreach-Object'''-étől. A '''foreach''' kulcsszó segítségével olyan ciklust tudunk létrehozni,
 +
ahol nem nekünk kell nyilvántartani, számlálni és léptetni a ciklusváltozót, hanem a PowerShell ezt megteszi helyettünk, ellenben a for ciklussal.
 +
Nézzük meg az alábbi példát: Oldjuk meg a '''Get-ChildItem -Name''' parancsot ciklus segítségével. A '''$child''' változóba berakjuk a '''Get-ChildItem -Name'''
 +
kimenetét, majd a '''foreach'''-el kiiratjuk:
 +
 +
[[Kép:sabrewolf1.jpg]]
 +
 +
Látszik a ciklus működési elve: az $c változóba a PowerShell mindig betölti az aktuális tömbelemet az '''$child''' tömbből egészen addig,
 +
amíg van elem, és minden elem mellett a sor végén látható szkriptblokkot végrehajtja (ami a {} között van)
 +
Nézzük meg '''for'''ciklussal ugyanezt:
 +
 +
[[Kép:sabrewolf22.JPG]]
 +
 +
Az eredmény ugyanaz, azonban a for ciklus hosszabb, illetve eggyel több változó szükséges hozzá.
 +
 +
A foreach kulcsszó mindig a kifejezés elején áll, ellenben a Foreach-Object-tel, mivel a | jel nem számít egy kifejezés elejének.
 +
 +
== Néhány példa a Foreach-Object használatához ==
 +
 +
Adjunk meg számokat, és osszuk el ezeket 512-vel:
 +
 +
'''0,512,1024,1000 | foreach-object -process {$_/512}'''
 +
 +
[[Kép:sabrewolf3.jpg]]
 +
 +
<p align="right"> Szerző: Fórizs Viktor </p>

Aktuális változat


Tartalomjegyzék

Foreach-Object

A Foreach-Object cmdlet hasonlóan működik, mint egy ciklus. Használatával egy adott műveletet végezhetünk el egy gyűjteményben (melyet felfoghatunk listaként) levő valamennyi objektumon. Alias-ai a % és a foreach (mely nem összetévesztendő a foreach kulcsszóval.) Most nézzünk meg egy egyszerű példát:

Get-Childitem | Foreach-Object {$_.Name}

A fenti példában a gyűjtemény a Get-Childitem cmdlet eredménye, A Foreach-Object pedig a $_.Name változó (mely az aktuális sor Name oszlopbeli elemét tartalmazza) használatával kilistázza ciklus működéssel a Get-Childitem kimenetének a Name nevű oszlopát:

Kép:Pelda1.jpg


Szintaktika

ForEach-Object [-process] <ScriptBlock[]> [-inputObject <psobject>] [-begin <scriptblock>] [-end <scriptblock>] [<CommonParameters>]

Látható, hogy a Foreach-Object-nek három szkriptblokkot lehet megadni paraméterként: az első szkriptblokkban szereplő utasítás(oka)t a ciklus elvégzése alatt, a második szkriptblokkot a ciklus kezdése előtt, a harmadik szkriptblokk utasításait pedig a ciklus befejeztével hajtja végre.

Most nézzük meg az egyes paramétereket külön-külön.([ ] között írt paraméterek nem kötelezőek):

-process <ScriptBlock[]>: egy kötelező paraméter, mely meghatározza azt a szkriptblokkot, amit mindegyik bemenő objektumra alkalmaz.

[-inputObject <psobject>]: Egy olyan objektumot vár, amit az első szkriptblokk, meghatároz a paraméterében. Olyan vátozót kell írni, ami tartalmazza ezt az objektumot, vagy olyan parancsot/kifejezést adjunk meg, ami az objektumot adja eredményül.

[-begin <scriptblock>]: meghatározza azt a szkript-blokkot, amit végrehajtunk, mielőtt feldolgoznánk az input-objektumokat. Vagyis ezáltal a paraméter által meghatározott utasítássorozatot fogjuk kezdésként végrehajtani.

[-end <scriptblock>]: ezt pedig a Foreach-Object ciklusa után fogjuk végrehajtani.

[<CommonParameters>]: az az paraméter, amelyet minden cmdlet alkalmazhat. A Foreach-Object a következő általános paramétereket használhatja: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutVariable.

A Foreach object és a foreach kulcsszó

A Powershellben kettő foreach létezik. Az első a Foreach-Object egyik aliasa, ugyanúgy használjuk, mint a Foreach-Object-et. A másik az egy kulcszó, használata különbözik a Foreach-Object-étől. A foreach kulcsszó segítségével olyan ciklust tudunk létrehozni, ahol nem nekünk kell nyilvántartani, számlálni és léptetni a ciklusváltozót, hanem a PowerShell ezt megteszi helyettünk, ellenben a for ciklussal. Nézzük meg az alábbi példát: Oldjuk meg a Get-ChildItem -Name parancsot ciklus segítségével. A $child változóba berakjuk a Get-ChildItem -Name kimenetét, majd a foreach-el kiiratjuk:

Kép:sabrewolf1.jpg

Látszik a ciklus működési elve: az $c változóba a PowerShell mindig betölti az aktuális tömbelemet az $child tömbből egészen addig, amíg van elem, és minden elem mellett a sor végén látható szkriptblokkot végrehajtja (ami a {} között van) Nézzük meg forciklussal ugyanezt:

Kép:sabrewolf22.JPG

Az eredmény ugyanaz, azonban a for ciklus hosszabb, illetve eggyel több változó szükséges hozzá.

A foreach kulcsszó mindig a kifejezés elején áll, ellenben a Foreach-Object-tel, mivel a | jel nem számít egy kifejezés elejének.

Néhány példa a Foreach-Object használatához

Adjunk meg számokat, és osszuk el ezeket 512-vel:

0,512,1024,1000 | foreach-object -process {$_/512}

Kép:sabrewolf3.jpg

Szerző: Fórizs Viktor

A lap eredeti címe: „http://wiki.ektf.hu/wiki/Opr4:foreach
Nézetek
nincs sb_3.144.93.73 cikk