Articles

Tutorial de instrucciones de bucle ForEach de Powershell con ejemplos

ForEach es una instrucción de PowerShell que se utiliza para usar iteración o bucle sobre la lista, matriz o colección de objetos, cadenas, números, etc. ForEach es un mecanismo de bucle muy popular donde podemos usar diferentes casos como bucle a través de archivos, Números, Cadenas, Procesos, etc. La versión 4.0 de Powershell aporta algunas mejoras de rendimiento al bucle ForEach.

Sintaxis de PowerShell ForEach

La instrucción Foreach tiene la siguiente sintaxis en la que usamos ITEMCOLLECTION y CODE-BLOCK.

ForEach(ITEM in COLLECTION){ CODE BLOCK}
  • El elemento es un único valor u objeto que cambia en cada iteración.
  • COLLECTION es una matriz, colección, lista de valores u objetos como 1,2,3,4.
  • EL BLOQUE DE CÓDIGO es el bloque donde se ejecuta la operación real que generalmente usa ITEM. Este bloque puede ser de líneas simples o múltiples.

Foreach A través De Una Matriz De Cadenas

De una manera sencilla, podemos iterar sobre la lista dada de la matriz de cadenas. Iteramos sobre el array llamado «cities» que contiene varios nombres de ciudades. Imprimiremos el nombre de cada ciudad con el comando «echo» como a continuación.

$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
ForeachThrough Una Matriz De Cadenas

podemos ver que cada ciudad nombre está impreso en el powershell terminal en una sola línea.

A través de Una Colección De Números

En el ejemplo anterior, hemos hecho un bucle sobre una lista dada de cadenas. También podemos iterar o recorrer una lista de números. Crearemos una matriz llamada numbers e iteraremos sobre cada elemento de esta matriz numérica.

$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
Foreach Through An Collection Of Numbers

Usage_ Usage

Cuando se utilizan algunos cmdlets para redirigir la salida del cmdlet al Foreach, podemos usar » $ » para cada elemento u objeto. Por ejemplo, si usamos el cmdlet «Get-Process», cada elemento o proceso se asignará al $ en cada iteración. Podemos especificar el atributo como Name $.Name e imprimir como a continuación.

PS> Get-Process | ForEach-Object {$_.ProcessName}
$_ Usage

We can also print multiple attributes in foreach by delimiting them with comma.

PS> Get-Process | ForEach-Object {$_.ProcessName, $_.ID}
$_ Usage

Foreach Through Files

We can also loop through files by using Get-ChildItem cmdlet. Get-ChildItemmostrará una lista de archivos y carpetas como dir comando MSDOS. Esta salida se escribirá en la consola con el comando Echo.

foreach($file in Get-ChildItem) {Echo $file}
Foreach a Través de Archivos

Foreach a Través de Extensiones de Archivo Específicas Como Bat

Podemos enumerar específicamente la extensión especificada. La extensión generalmente proporcionará el tipo de archivo como texto, avi, mkv, mp3, doc, etc. En este ejemplo, solo listaremos *.bat o archivos Bat.

 foreach($file in Get-ChildItem *.bat) {Echo $file}
Foreach a Través de Extensiones de Archivo Específicas Como Bat

podemos ver que sólo los archivos como test.bat y autoexec.bat lista.

Foreach Sobre Archivo CSV

Los archivos CSV se utilizan para almacenar datos de texto de manera estructurada. Podemos fácilmente foreach en cada línea de un archivo CSV como a continuación. En este ejemplo, leeremos un archivo CSV IP y lo proporcionaremos a foreach para imprimir la consola de Powershell.

$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *