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 ITEM
COLLECTION
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}
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}
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}
We can also print multiple attributes in foreach by delimiting them with comma.
PS> Get-Process | ForEach-Object {$_.ProcessName, $_.ID}
Foreach Through Files
We can also loop through files by using Get-ChildItem
cmdlet. Get-ChildItem
mostrará 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 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}
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}