A ForEach() az egyszerűbb, nézzünk rá néhány példát! Elsőként a ForEach-Object cmdlettel megegyező felhasználási területre:
PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach({$_*2})
ablakablak
babababa
cicacica
zsiráfzsiráf
Látható, hogy a ForEach() metódusnak átadott szkriptblokk minden elemre lefut, és a $_ behelyettesítődik az egyes elemekkel.
Megjegyzés
Érdekes módon, a gömbölyű zárójel itt elhagyható, azaz ez is tökéletesen működik:
PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach{$_*2}
ablakablak
babababa
cicacica
zsiráfzsiráf
Bár én személy szerint inkább használom a gömbölyű zárójeles hagyományos szintaxist.
A szkriptblokk lehet olyan is, amelyik paramétereket fogad. Ilyenkor a paraméterek értékeit a ForEach() további paramétereiként kell átadni, mint ahogy az alábbi hibajelzés utal rá:
PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach()
Cannot find an overload for ".ForEach(expression [, arguments...])" and the ar
gument count: "0".
At line:1 char:1
+ ("ablak", "baba", "cica", "zsiráf").foreach()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
Az alábbiakban a szkriptblokk egy $x paramétert vár, és ennek 3-at adok át:
PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach({param($x)$_*$x}, 3)
ablakablakablak
babababababa
cicacicacica
zsiráfzsiráfzsiráf
De a ForEach() metódus másra is felhasználható! Például a gyűjtemény elemeinek típuskonverziójára:
PS C:\> (1.1,2.1,3.1,4.1).ForEach([int])
1
2
3
4
A fenti példában a lebegőpontos számokat alakította egésszé. Érdekes módon a szövegek karaktertömbbé alakítása nem megy ezzel a módszerrel:
PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach([char[]])
Cannot convert value "System.Collections.ArrayList" to type "System.Char[]". E
rror: "Cannot convert value "ablak" to type "System.Char". Error: "String must
be exactly one character long.""
At line:1 char:1
+ ("ablak", "baba", "cica", "zsiráf").foreach([char[]])
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastExceptionEnumerableToArray
Következő lehetőség a tulajdonságok elérése:
PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach("length")
5
4
4
6
Az utolsó pedig a metódusok meghívása:
PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach("toupper")
ABLAK
BABA
CICA
ZSIRÁF