Ciclos#
Comando ForEach-Object#
Foreach-Object es un comando para procesar flujos de datos.
Foreach-Object se utiliza para el procesamiento línea por línea de elementos a medida que llegan al flujo de entrada:
ForEach-Object -InputObject (Get-Process) -Process { $_ }
Get-Process | ForEach-Object { $_.Name }
Get-Process | % { $_.Name } # % — alias de ForEach-Object
Get-Process | foreach { $_.Name } # alias de la palabra clave foreach
Los operadores break y continue no funcionan con ForEach-Object, ya que no es un ciclo en el sentido habitual, sino un procesamiento de objetos a través de un pipeline.
Ciclo Foreach#
El ciclo Foreach es un ciclo para procesar colecciones.
El ciclo foreach itera sobre una colección:
foreach ($item in $array) {
# acciones con $item
}
El operador continue omite el resto de la iteración actual y pasa a la siguiente.
El operador break interrumpe completamente el ciclo.
Para salir de ciclos anidados se puede utilizar una etiqueta:
:outer foreach ($i in $array1) {
foreach ($j in $array2) {
if (<condición>) { break outer }
}
}
Método ForEach#
El método ForEach() en PowerShell es un método de colecciones (por ejemplo, arreglos, listas) que permite ejecutar un script o acción especificada para cada elemento de la colección. Se invoca en el objeto de la colección, acepta un bloque de script y lo aplica secuencialmente a todos los elementos, pasando el elemento actual a una variable especial $PSItem (similar a $_ en pipelines).
$collection.ForEach({
# Aquí $PSItem es el elemento actual de la colección
Write-Output $PSItem
})
Este método es conveniente cuando se necesita realizar una acción para los elementos de la colección sin usar un ciclo foreach o el comando ForEach-Object.
Ciclo For#
El ciclo For es un ciclo iterativo clásico.
La sintaxis es similar a los lenguajes de tipo C:
for (inicialización; condición; acción) {
# cuerpo del ciclo
}
Ejemplo:
for ($i = 1; $i -le 10; $i++) {
Write-Host $i
}
El operador continue omite el resto de la iteración actual y pasa a la siguiente.
El operador break interrumpe completamente el ciclo.
Ciclos While y Do-While#
El ciclo While es un ciclo con condición previa. While primero verifica la condición, luego ejecuta el cuerpo:
while ($a -le 10) {
$a++
}
El ciclo Do-While es un ciclo con condición posterior. Do-While primero ejecuta el cuerpo, luego verifica la condición:
do {
$i++
} while ($i -le 10)
La ejecución se repite mientras la condición sea verdadera.
El operador continue omite el resto de la iteración actual y pasa a la siguiente.
El operador break interrumpe completamente el ciclo.
Ciclo Do-Until#
El ciclo Do-Until ejecuta el cuerpo y luego verifica la condición para falsedad:
do {
$i++
} until ($i -le 10)
Repite el cuerpo mientras la condición NO se cumple.
El operador continue omite el resto de la iteración actual y pasa a la siguiente.
El operador break interrumpe completamente el ciclo.
Trabajo con ciclos#
Se pueden consultar ejemplos de uso en el siguiente enlace: