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:

kak rabotat s tsiklami v powershell foreach object i while na primerakhfixmypc.ru