PowerShell es un potente lenguaje de script que ofrece muchas funciones para la automatización y gestión de sistemas basados en Windows. Uno de los constructos más comúnmente utilizados es el bucle while
de PowerShell.
No te preocupes si te has quedado atrapado en un bucle infinito mientras intentabas aprender a escribir scripts en PowerShell. Deja que el bucle while
de PowerShell te guíe hacia tu gran escapada. Y en este tutorial, volverás a los conceptos básicos de trabajar con bucles while
en PowerShell mientras escribes tus scripts.
¡Sigue leyendo para llevar tus habilidades de scripting en PowerShell al siguiente nivel!
Requisitos previos
Este tutorial será una demostración práctica. Para seguirlo, asegúrate de tener lo siguiente:
- A Windows machine – This tutorial uses Windows 10.
- Windows PowerShell 5.0 o superior instalado: Este tutorial utiliza PowerShell 7.
- A user account with administrator privileges.
Ejecución de bucles while
con una única condición
Uno de los tipos más simples de bucle while
es el tipo de condición única. A diferencia de la instrucción If
, este tipo de bucle ejecuta un conjunto de comandos dados siempre que una condición especificada se evalúe como verdadera. Cuando se devuelve un ‘Falso’, el bucle se rompe y la ejecución continúa con el resto del script.
A continuación se muestra la sintaxis para un bucle while
con una sola condición:
- Lo primero que notará es el uso de paréntesis. La condición debe estar encerrada entre paréntesis, mientras que el bloque de código es un conjunto de comandos de PowerShell que se ejecutan mientras la condición sea verdadera.
- Lo segundo a tener en cuenta es que la condición debe devolver un valor booleano, que se evalúa como Verdadero o Falso.
Ejecute el código a continuación, donde el valor de $val
comienza en 0
y se incrementa en 1
cada vez que se ejecuta el bloque de código hasta que el valor de la variable $val
sea igual a 3
.
Cuando $val
alcanza un valor de 3
, lo que hace que la condición sea Falsa, el bucle se interrumpe y la ejecución continúa con el resto del script.

Ejecutando un bucle While de PowerShell con variables integradas ($true
/$false
)
El ejemplo anterior, utilizando condiciones en el bucle while
, funciona bien. Pero también puedes utilizar variables integradas de PowerShell, como $true
y $false
, para crear un bucle While
.
La sintaxis a continuación se ejecuta hasta que $true
ya no es $true
. En otras palabras, el bucle se ejecuta indefinidamente. Pero siempre debes incluir una manera de salir de un bucle infinito. De lo contrario, quedas atrapado para siempre. Aprenderás más sobre cómo salir de un bucle usando break
y continue
más adelante en este tutorial.
Ejecuta el bloque de código a continuación, que se ejecuta indefinidamente, imprimiendo el valor de $i
en la consola.
Ahora, presiona Ctrl+C para salir del bucle. Este bucle consume muchos recursos del sistema, así que ten cuidado al usarlos.

while
loop with PowerShell’s built-in ($true
) variableEjecutando bucles While de múltiples condiciones
Además de los bucles while
con una sola condición, también puedes crear bucles while
con múltiples condiciones. Al igual que en el bucle while
con una sola condición, las condiciones deben devolver un valor booleano, ya sea Verdadero o Falso.
A continuación se muestra la sintaxis para un bucle while
con múltiples condiciones, similar a la sintaxis para un bucle while
con una sola condición. La principal diferencia es que puedes incluir múltiples condiciones separadas por los siguientes operadores:
- Y (
-and
) – Ambas condiciones deben ser verdaderas. - O (
-or
) – Cualquiera de las condiciones puede ser verdadera.
Ejecuta el código a continuación, que hace un bucle while
mientras $val
no sea igual (-ne
) a 3
-y
$i
no sea igual (-ne
) a 5
.
Cuando los valores de ambas variables alcanzan sus respectivas condiciones, el bucle se rompe y la ejecución continúa con el resto del script.

Ejecutando un bucle while
con el operador AND

while
loop with AND operatorAhora, ejecuta el siguiente código, que pide al usuario su edad, almacenada en la variable $age
.
Si el usuario ingresa un número menor que (-lt
) 1
o no es un número (-nomatch
), se le solicita nuevamente que ingrese un número válido. Este comportamiento es útil para dar a los usuarios múltiples oportunidades de ingresar una entrada válida.
En la salida a continuación, puedes ver que se le pidió al usuario que ingresara su edad tres veces, de la siguiente manera:
- La primera vez, el usuario ingresó diez, que no es un número.
- La segunda vez, el usuario ingresó 0, que está por debajo de 1.
- La tercera vez, el usuario ingresó 10, que es una edad válida.

while
loop with the OR operatorUso de las palabras clave BREAK y CONTINUE en bucles While
Has visto cómo los bucles while
agregan flexibilidad a tu script de PowerShell. Pero para controlar mejor la ejecución de tus bucles While, agrega las palabras clave break
y continue
.
Por ejemplo, si solo deseas procesar un cierto número de elementos en una matriz, puedes usar la palabra clave BREAK para salir del bucle cuando se hayan procesado el número deseado de elementos.
Estas palabras clave funcionan de la siguiente manera:
Keyword | Function |
---|---|
break | Immediately exits the loop and continues execution with the rest of the script. |
continue | Skips over the remaining code block in the current iteration of the loop and continues with the next iteration. |
Ejecuta el código a continuación, que recorre una matriz de 10 elementos.
En el código a continuación, la declaración if
verifica el valor de $i
. Si el valor de $i
es 5
, la palabra clave continue
salta sobre el código restante en el bucle y continúa con la siguiente iteración. Si el valor de $i
es 8
, la palabra clave break
sale del bucle y continúa con el resto del script.
De lo contrario, el bucle while
imprime (Write-Host
) e incrementa el valor de la variable $i
en 1
.
Como puedes ver en la salida a continuación, el bucle omitió el quinto y octavo elementos en el array. El bucle while
procesó todos los demás elementos en el array y salió después de alcanzar el octavo elemento.

while
loop with break
and continue
keywordsLimitar el Tiempo que Ejecuta un Bucle While
Normalmente, es posible que desees limitar el tiempo que ejecuta un bucle. Tal vez estás intentando conectarte a un servidor remoto. Si es así, puedes darle al servidor tiempo para responder antes de agotar el tiempo y salir del bucle utilizando el cmdlet Start-Sleep
dentro de tu bucle while
.
El cmdlet Start-Sleep
pausa la ejecución del script durante un tiempo especificado.
Ejecute el código a continuación para obtener y almacenar la fecha y hora actuales Get-Date
en la variable $startTime
. El bucle while
se ejecuta mientras la fecha/hora actuales es menor que 10
segundos desde el valor almacenado en $startTime
.
A medida que se ejecuta el bucle while
, se imprime un mensaje mientras el cmdlet Start-Sleep
pausa la ejecución del script durante 1
segundo.
El bloque de código a continuación es solo un esquema para lo que realmente usaría en la práctica. Puede poner más en el código dentro del bucle según sea necesario.
A continuación, puedes ver que el bucle continuó ejecutándose durante 10 segundos antes de salir del bucle.

while
loop runsConclusión
Los bucles while
de PowerShell son útiles cuando te enfrentas a conceptos complejos para evitar quedarte atascado en un bucle o mientras escribes tus scripts. Y en este tutorial, has aprendido muchas formas de trabajar con los bucles while
para crear scripts más flexibles y potentes.
Con este nuevo conocimiento, el cielo es el límite. ¿Por qué no aprovechar al máximo el uso de operadores lógicos y palabras clave para automatizar tareas con tus scripts?