PowerShell ForEach-Object

Example

the ForEach-Object cmdlet toimii samalla tavalla kuin foreach statement, mutta ottaa syötteensä putkesta.

peruskäyttö

$object | ForEach-Object { code_block}

esimerkki:

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

Foreach-Object on kaksi oletusnimeä, foreach ja % (pikakirjoituksen syntaksi). Yleisin on %, koska foreach voidaan sekoittaa foreach-lauseeseen. Esimerkkejä:

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

Advanced usage

Foreach-Object erottuu vaihtoehdosta foreach ratkaisut, koska se on cmdlet, eli se on suunniteltu putkistoa varten. Tämän vuoksi sillä on tuki kolmelle scriptblocksille aivan kuten cmdlet tai advanced-funktiolla:

  • Begin: suoritetaan kerran ennen putkesta saapuvien kohteiden silmukointia. Yleensä käytetään luomaan funktioita käytettäväksi silmukassa, luomaan muuttujia, avaamaan yhteyksiä (tietokanta, web +) jne.
  • prosessi: suoritetaan kerran per tuote, joka saapui putkistosta. ”Normaali” foreach codeblock. Tämä on oletus, jota käytetään yllä olevissa esimerkeissä, kun parametria ei ole määritetty.
  • loppu: suoritetaan kerran kaikkien kohteiden käsittelyn jälkeen. Käytetään yleensä yhteyksien sulkemiseen, raportin luomiseen jne.

Example:

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