PowerShell ForEach-Object

Esempio

Il cmdletForEach-Objectfunziona in modo simile all’istruzioneforeach, ma prende il suo input dalla pipeline.

utilizzo di Base

$object | ForEach-Object { code_block}

Esempio:

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

Foreach-Object dispone di due predefinito alias foreach e % (sintassi abbreviata). Il più comune è % perché foreach può essere confuso con l’istruzione foreach. Esempi:

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

Uso avanzato

Foreach-Objectsi distingue dalle soluzioni alternative foreach perché è un cmdlet che significa che è progettato per utilizzare la pipeline. Per questo motivo, ha il supporto per tre scriptblocks proprio come un cmdlet o una funzione avanzata:

  • Begin: Eseguito una volta prima di scorrere gli elementi che arrivano dalla pipeline. Solitamente utilizzato per creare funzioni da utilizzare nel ciclo, creazione di variabili,apertura di connessioni (database, web +) ecc.
  • Processo: eseguito una volta per articolo arrivato dalla pipeline. “Normale” foreach codeblock. Questo è il valore predefinito utilizzato negli esempi precedenti quando il parametro non è specificato.
  • Fine: eseguito una volta dopo l’elaborazione di tutti gli elementi. Di solito utilizzato per chiudere le connessioni, generare un rapporto ecc.

Esempio:

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