PowerShell ForEach-Object

Eksempel

ForEach-Object cmdleten fungerer på samme måte somforeach setning, men tar sin inngang fra rørledningen.

Grunnleggende bruk

$object | ForEach-Object { code_block}

Eksempel:

$names = @("Any","Bob","Celine","David")$names | ForEach-Object { "Hi, my name is $_!"}

Foreach-Objecthar to standardaliaser,foreachog%(kortfattet syntaks). Mest vanlig er % fordi foreach kan forveksles med foreach-setningen. Eksempler:

$names | % { "Hi, my name is $_!"} $names | foreach { "Hi, my name is $_!"} 

Avansert bruk

Foreach-Object skiller seg ut fra alternativetforeach løsninger fordi det er en cmdlet som betyr at den er designet for å bruke rørledningen. På grunn Av dette har den støtte for tre scriptblocks akkurat som en cmdlet eller avansert funksjon:

  • Begin: Utført en gang før looping gjennom elementene som kommer fra rørledningen. Vanligvis brukes til å lage funksjoner for bruk i loopen, lage variabler, åpne tilkoblinger (database, web +) etc.
  • Prosess: Utført en gang per element kom fra rørledningen. «Normal» forhver kodeblokk. Dette er standard som brukes i eksemplene ovenfor når parameteren ikke er angitt.
  • End: Utført en gang etter behandling av alle elementer. Vanligvis brukes til å lukke tilkoblinger, generere en rapport etc.

Eksempel:

"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}