ForEach (sentencia de bucle)

Realice un bucle a través de un conjunto de objetos de entrada y realice una operación (ejecute un bloque de sentencias) contra cada uno de ellos.

Sintaxis de foreach powershell

ForEach (artículo In colección) {ScriptBlock}

Ahora veremos lo que significa cada una de éstas cosas al usar foreach en Windows PowerShell. Lo que he marcado en negrita debemos utilizarlo de manera textual en nuestra función de ForEach. Lo que he resaltado en negrita son las diferentes variables que powershell utiliza en la sentencia ForEach.
Clave / Key
       artículo = Es la Variable que hace de contador en la función para retener la posición actual.
       colección = Una colección de objetos, por ejemplo, nombres de archivo, claves de registro, nombres de servidor. Podemos combinar con CSV-Import

ScriptBlock = Un bloque de script que se ejecuta de forma iterativa para cada objeto de la colección.

La colección será evaluada y almacenada como un array en memoria antes de que se ejecute el scripttblock.

Sintaxis de un bucle FOREACH en Windows Powershell Scripting

La sentencia foreach no usa canalización (a diferencia de ForEach-Object). Si usa foreach en una canalización de comandos, PowerShell ejecutará el alias foreach que llama ForEach-Object.

Utiliza la sentencia ForEach cuando la colección de objetos es lo suficientemente pequeña como para que pueda ser cargada en la memoria.

Utilice el cmdlet ForEach-Object cuando desee pasar sólo un objeto a la vez por la tubería, minimizando el uso de memoria. En la mayoría de los casos, ForEach se ejecutará más rápido que ForEach-Object, hay excepciones, como por ejemplo, iniciar varios jobs de fondo. En caso de duda, pruebe ambas opciones con Measure-Command.

En Windows PowerShell 4.0 y posteriores, el método ForEach proporciona un rendimiento aún más rápido al realizar los bucles y las operaciones.

ForEach Powershell: Algunos ejemplos prácticos

Ahora te mostraré algunos ejemplos fáciles de probar para el bucle o loop ForEach en Powershell. Para ello utilizaremos diferentes fuentes de entrada y luego printearemos los datos. Combinar los bucles ForEach de Windows Powershell con Expresiones Regulares o importación de archivos (en formato CSV por ejemplo) pueden ayudarnos para desarrollar scripts complejos.

ForEach Powershell Windows con strings o cadenas de texto

Uno de los primeros ejemplos que puedes hacer para probar los bucles con foreach en poweshell es con strings o cadenas de texto. Para ello haz un loop utilizando la operación foreach de Powershell a través de una serie de strings almacenados en una variable. Después lo recorremos al completo para mostrar sus datos.

$bosque= @("Aliso", "Fresno", "Abedul", "Cedro", "Castaño", "Olmo")
foreach ($arbol In $bosque) {
"$arbol= " + $arbol.length
}

FOREACH POWERSHELL Windows: Una forma eficiente de hacer los bucles

Resultado al ejecutar este ForEach Powershell

Bucle Foreach Powershell para un conjunto de números

Otra forma que tenemos de testear los bucles con foreach en powershell es haciendo un loop a través de una colección de números. Dentro del bucle establecemos un condicional para hacer un echo (printear por consola) de cada número a menos que el número sea 2:
foreach ($num en 1,2,3,4,5) {
if ($num -eq 2) { continue } ; $num
}

Bucle ForEach Powershell atráves de colección de archivos o ficheros

Otra opción que puedes hacer para probar en windows powershell la operación foreach es haciendo un bucle sobre una colección de archivos.txt. Aquí utiliza la variable $archivo para seleccionar todos los ficheros que cuya extensión sea .txt. Para ello utiliza la operación get-ChildItem, que selecciona todo lo englobado bajo la variable que le precede. En éste caso pasamos un RegEx (Regular Expression) para que filtre en función de la extensión o formato del archivo.
foreach ($archivo In get-ChildItem *.txt) {
echo $archivo.name
}

«La única manera de hacer un gran trabajo es amar lo que haces. Si aún no lo has encontrado, sigue buscando. No te conformes. Como con todos los asuntos del corazón, sabrás cuando lo encuentres» – Steve Jobs

Comandos en Windows PowerShell relacionados

  1. Variable $foreach – Se refiere al enumerador en un bucle foreach.
  2. Extracto de la ruptura
  3. Continuar estado de cuenta
  4. ForEach-Object – Bucle para cada objeto en la tubería (foreach)
  5. ForEach (método) – Recorre los elementos de una colección
  6. For – Hacer un bucle a través de los elementos que coinciden con una condición
  7. IF – Realiza un comando condicionalmente
  8. Switch – Múltiples sentencias if
  9. While – Loop mientras una condición es True