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}