PowerShell ForEach-Object
exemplu
ForEach-Object
cmdlet funcționează similar cuforeach
declarație, dar ia de intrare de la conducta.
utilizare de bază
$object | ForEach-Object { code_block}
exemplu:
$names = @("Any","Bob","Celine","David")$names | ForEach-Object { "Hi, my name is $_!"}
Foreach-Object
are două pseudonime implicite, foreach
și %
(sintaxă prescurtare). Cel mai frecvent este %
deoarece foreach
poate fi confundat cu declarația foreach. Exemple:
$names | % { "Hi, my name is $_!"} $names | foreach { "Hi, my name is $_!"}
utilizare avansată
Foreach-Object
se distinge de soluțiile alternativeforeach
deoarece este un cmdlet ceea ce înseamnă că este proiectat să utilizeze conducta. Din acest motiv, are suport pentru trei scriptblocks la fel ca un cmdlet sau o funcție avansată:
- Begin: executat o dată înainte de a trece prin elementele care sosesc din conductă. Folosit de obicei pentru a crea funcții pentru utilizare în buclă, crearea de variabile, deschiderea conexiunilor (bază de date, web +) etc.
- proces: executat o dată pe element a sosit din conducta. „Normal” pentru fiecare codeblock. Aceasta este valoarea implicită utilizată în exemplele de mai sus atunci când parametrul nu este specificat.
- End: executat o dată după procesarea tuturor elementelor. De obicei folosit pentru a închide conexiunile, pentru a genera un raport etc.
exemplu:
"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}