PowerShell ForEach-Object

Příklad:

ForEach-Object cmdlet funguje podobně jako foreach tvrzení, ale bere svůj vstup z potrubí.

Základní použití

$object | ForEach-Object { code_block}

Příklad:

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

Foreach-Object má dva výchozí aliasy, foreach% (zkratka syntaxi). Nejběžnější je % protože foreach lze zaměnit s příkazem foreach. Příklady:

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

Pokročilé použití

Foreach-Object vyčnívá z alternativních foreach řešení, protože je to rutina, což znamená, že je určen k použití potrubí. Z tohoto důvodu, to má podporu pro tři scriptblocks jen jako rutinu, nebo pokročilé funkce:

  • Zahájení: Provedeny jednou opakování prostřednictvím předmětů, které přicházejí z potrubí. Obvykle se používá k vytváření funkcí pro použití ve smyčce, vytváření proměnných, otevírání připojení (databáze, web +) atd.
  • proces: provedeno jednou za položku, která dorazila z potrubí. „Normální“ pro každý kódový blok. Toto je výchozí hodnota použitá ve výše uvedených příkladech, pokud parametr není zadán.
  • End: provedeno jednou po zpracování všech položek. Obvykle se používá k uzavření připojení, generování sestavy atd.

příklad:

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