PowerShell ForEach-Object

przykład

polecenie cmdlet ForEach-Objectdziała podobnie do polecenia foreach, ale pobiera dane wejściowe z potoku.

podstawowe użycie

$object | ForEach-Object { code_block}

przykład:

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

Foreach-Object ma dwa domyślne aliasy, foreach I % (składnia skrócona). Najczęściej jest to%, ponieważforeach można pomylić z instrukcją foreach. Przykłady:

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

zaawansowane użycie

Foreach-Object wyróżnia się spośród alternatywnych rozwiązańforeach, ponieważ jest to cmdlet, co oznacza, że jest przeznaczony do korzystania z potoku. Z tego powodu ma wsparcie dla trzech blokad skryptów, takich jak cmdlet lub Zaawansowana funkcja:

  • Begin: wykonywany raz przed zapętleniem elementów, które przychodzą z potoku. Zwykle używany do tworzenia funkcji do użycia w pętli, tworzenia zmiennych, otwierania połączeń (baza danych, web+) itp.
  • proces: wykonywany raz na element przybył z potoku. „Normal” foreach codeblock. Jest to wartość domyślna użyta w powyższych przykładach, gdy parametr nie jest określony.
  • End: wykonywane raz po przetworzeniu wszystkich elementów. Zwykle używany do zamykania połączeń, generowania raportów itp.

przykład:

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