PowerShell ForEach-Object
exempel
ForEach-Object
cmdlet fungerar på samma sätt somforeach
uttalande, men tar sin ingång från rörledningen.
Grundläggande användning
$object | ForEach-Object { code_block}
exempel:
$names = @("Any","Bob","Celine","David")$names | ForEach-Object { "Hi, my name is $_!"}
Foreach-Object
har två standardalias, foreach
och %
(stenografi syntax). Vanligast är %
eftersom foreach
kan förväxlas med foreach-uttalandet. Exempel:
$names | % { "Hi, my name is $_!"} $names | foreach { "Hi, my name is $_!"}
avancerad användning
Foreach-Object
sticker ut från alternativetforeach
lösningar eftersom det är en cmdlet vilket innebär att den är utformad för att använda rörledningen. På grund av detta har det stöd för tre scriptblocks precis som en cmdlet eller avancerad funktion:
- börja: exekveras en gång innan looping genom de objekt som kommer från rörledningen. Vanligtvis används för att skapa funktioner för användning i slingan, skapa variabler, öppna anslutningar (databas, webb +) etc.
- Process: exekveras en gång per objekt kom från rörledningen. ”Normal” förvarje kodblock. Detta är standardvärdet som används i exemplen ovan när parametern inte anges.
- End: exekveras en gång efter bearbetning av alla objekt. Vanligtvis används för att stänga anslutningar, generera en rapport etc.
exempel:
"Any","Bob","Celine","David" | ForEach-Object -Begin { $results = @()} -Process { #Create and store message $results += "Hi, my name is $_!"} -End { #Count messages and output Write-Host "Total messages: $($results.Count)" $results}