PowerShell foreach loop

PowerShell foreach loop
En la programación, un bucle es un concepto simple pero poderoso. Un bucle es la repetición de un conjunto de instrucciones a menos que se cumpla una determinada condición. Un bucle adecuado puede ahorrar tiempo y aumentar la eficiencia de un código. PowerShell, siendo un lenguaje de secuencias de comandos, admite varias formas de bucles.

En esta guía, consulte cómo usar el bucle foreach en PowerShell.

Bucles de PowerShell

En principio, todos los bucles son los mismos. Sin embargo, para una mejor experiencia de codificación y legibilidad, varios lenguajes de programación implementan el concepto de bucle de diferentes maneras. De hecho, el mismo idioma puede admitir múltiples tipos de bucles, cada uno con su estructura única.

PowerShell admite varios tipos de bucles.

  • para: un bucle estándar para ejecutar ciertas tareas un número específico de veces.
  • Mientras: sigue realizando un conjunto de operaciones hasta que se cumplan las condiciones.
  • hacer mientras: el bucle sigue funcionando mientras la condición sea verdadera. Sin embargo, siempre ejecutará la primera vez.
  • Do-to-tol: casi funciona de manera similar a hacer mientras. La única diferencia es que solo se ejecutará si la condición dada no es verdadera.
  • foreach-object: este bucle realiza una operación para cada objeto de entrada.

Como sugiere el título del artículo, estaremos mirando el bucle foreach.

Foreach Loop en PowerShell

El código de la estructura de bucle foreach es el siguiente.

Foreach (artículo en la colección)


Aquí,

  • Artículo: es un solo valor u objeto que cambia con cada iteración.
  • Colección: puede ser una matriz, lista de valores, colección u objetos.
  • : Es el bloque de código que se ejecuta una vez que se cumple la condición de bucle. Generalmente usa el elemento.

Foreach es uno de los bucles de PowerShell más comunes y simples. Lee una colección completa de elementos, y para cada elemento, realiza la (s) operación (s) definida.

Se puede usar para numerosas situaciones, por ejemplo, trabajando el contenido de un directorio.

Bucle foreach en la práctica

En esta sección, echaremos un vistazo a algunas implementaciones de muestra del bucle foreach. Para ejecutar los códigos, ya he preparado un script de PowerShell vacío.

$ nano foreach-loop.PS1

El shebang se vería algo así.

ps!/snap/bin/powershell

Marque el archivo de script de PowerShell como un ejecutable.

$ chmod +x foreach-loop.PS1

Foreach a través de una matriz de cuerdas
En la primera demostración, implementaremos un bucle foreach que se lee de una matriz de nombres de la ciudad e imprima los nombres de las ciudades en la pantalla.

Primero, declare la matriz de cadenas.

$ Cities = ("Tokio", "Nueva York", "Moscú", "Londres", "Sydney")

Ahora, implementa el bucle foreach para que funcione con cada elemento de la matriz.

foreach ($ ciudad en $ ciudades)

Echo $ City

Pruebe el código ejecutando el script.

ps ./Foreach-Loop.PS1

Foreach a través de una colección de números
En este ejemplo, implementaremos el bucle foreach similar al anterior. La diferencia es que pasará por una variedad de números.

Declarar la matriz de números.

$ números = (9,8,7,6,5,4,3,2,1)

Ahora, implementa el bucle foreach para imprimir los números uno por uno.

foreach ($ número en $ números)

echo $ número

Ponamos el código en acción.

ps ./Foreach-Loop.PS1

Foreach a través de archivos
Es uno de los escenarios más comunes para usar bucles foreach. Con la ayuda de otros cmdlets, podemos obtener información específica sobre ciertos directorios/archivos y usar esa información para realizar las acciones necesarias.

En este ejemplo, el bucle foreach verificará el contenido de un directorio/home/viktor/escritorio/sample_dir e imprimirá el nombre de los archivos.

foreach ($ archivo en get -childItem -Recurse -Path/Home/Viktor/Desktop/Sample_dir)

Echo $ archivo

Ejecutar el código.

ps ./Foreach-Loop.PS1

Aquí, el cmdlet Get-Childitem Obtiene los artículos sobre la ubicación descritos. La bandera "-path" describe qué directorio investigar. Si hay múltiples niveles de subdirectorios, entonces el uso de "-Curse" obtendrá todos los elementos de los niños de manera recursiva. Si desea recurrir a una cierta profundidad, también puede usar el parámetro "-Depth". Mira más en Get-Childitem.

También podemos ajustar el código para buscar solo extensiones de archivos específicas.

foreach ($ archivo en get -childitem -recurse -path/home/viktor/escritorio/sample_dir/*.TXT)

Echo $ archivo

Foreach sobre CSV
Un archivo CSV es una base de datos de texto de valores, cada valor separado por un delimitador (coma, principalmente). Es una estructura simple pero efectiva para almacenar datos estructurados en formato de texto. El formato CSV es utilizado por varias aplicaciones y motores de base de datos para conveniencia y facilidad de uso.

Podemos usar el bucle foreach para trabajar con valores individuales de un archivo CSV y tomar medidas en consecuencia. El siguiente ejemplo hace exactamente eso.

$ valores = (Get-Content/Home/Viktor/Sample.CSV) [0].dividir(",")
foreach ($ valor en $ valores)
Echo $ valor

Método foreach
Hasta ahora, hemos visto el bucle foreach en acción, a la derecha? En PowerShell, también aparece como el método foreach (). A partir de PowerShell V4, este método existe en matrices o colecciones de objetos. El método tiene un bloque de script estándar como el parámetro que contiene las acciones a tomar para cada iteración.

Echemos un vistazo al método foreach () en acción. Primero, cree una matriz de muestra.

$ números = (2,4,8,16,32,64,128,256,512)

Ahora, podemos llamar al método y describir un comando de eco simple por iteración.

$ Números.Para cada(
echo $ _
)

Foreach-object
El bucle foreach también puede funcionar directamente con objetos. Para hacerlo, hay un cmdlet dedicado llamado Foreach-Object. Toma un objeto como entrada e itera a través de sus elementos.

En el siguiente ejemplo, buscaremos a través de un directorio específico para ".archivos de txt "y use foreach-object para actuar en función de cada elemento del resultado de la búsqueda.

$ nombres = get -childitem -recurse/home/viktor/escritorio/sample_dir/*.TXT
$ nombres |
Foreach-object
echo $ _

Como puede ver, la estructura central de foreach-object es bastante similar. La única diferencia es que puede pasar el objeto usando tuberías.

Pensamientos finales

El bucle foreach en PowerShell es un bucle simple pero efectivo y potente. Puede operar en función de objetos, matrices o elementos individuales. Esta guía demuestra algunas de las implementaciones comunes del bucle foreach.

Además del bucle foreach, PowerShell admite otros bucles estándar, como el bucle para un bucle. Consulte esta guía para el bucle en PowerShell.

Computación feliz!