PowerShell ForEach-Object

Ejemplo

El cmdlet ForEach-Object funciona de forma similar a la instrucción foreach, pero toma su entrada de la canalización.

el uso Básico

$object | ForEach-Object { code_block}

Ejemplo:

$names = @("Any","Bob","Celine","David")$names | ForEach-Object { "Hi, my name is $_!"}
Foreach-Object tiene dos predeterminado alias foreach y % (sintaxis abreviada). El más común es % porque foreach se puede confundir con la instrucción foreach. Ejemplos:

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

Uso avanzado

Foreach-Objectse destaca de las soluciones alternativas foreach porque es un cmdlet, lo que significa que está diseñado para usar la canalización. Debido a esto, admite tres bloques de scripts como un cmdlet o una función avanzada:

  • Begin: Ejecutado una vez antes de recorrer los elementos que llegan de la canalización. Normalmente se usa para crear funciones para su uso en el bucle, crear variables, abrir conexiones(base de datos, web +), etc.Proceso
  • : Se ejecuta una vez por cada elemento que llega de la canalización. «Normal» foreach codeblock. Este es el valor predeterminado utilizado en los ejemplos anteriores cuando no se especifica el parámetro.
  • Fin: Se ejecuta una vez después de procesar todos los elementos. Generalmente se usa para cerrar conexiones, generar un informe, etc.

Ejemplo:

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