O PowerShell é uma linguagem de script poderosa que oferece muitos recursos para automação e gerenciamento de sistemas baseados no Windows. Um dos construtos mais comumente usados é o loop while
do PowerShell.
Não se preocupe se você ficou preso em um loop infinito ao tentar aprender script do PowerShell. Deixe o loop while
do PowerShell guiar você para a sua grande saída. E neste tutorial, você voltará aos conceitos básicos de trabalhar com loops while
no PowerShell enquanto escreve seus scripts.
Continue lendo para levar suas habilidades de script do PowerShell para o próximo nível!
Pré-requisitos
Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de ter o seguinte:
- A Windows machine – This tutorial uses Windows 10.
- Windows PowerShell 5.0 ou superior instalado – Este tutorial usa o PowerShell 7.
- A user account with administrator privileges.
Executando Loops while
com Condição Única
Um dos tipos mais simples de loop while
é o tipo de condição única. Ao contrário da declaração If
, este tipo de loop executa um conjunto de comandos dados enquanto uma condição especificada avalia como verdadeira. Quando um ‘Falso’ é retornado, o loop é interrompido e a execução continua com o restante do script.
Abaixo está a sintaxe para um loop de condição única while
:
- A primeira coisa que você notará é o uso de parênteses. A condição deve ser cercada por parênteses, enquanto o bloco de código é um conjunto de comandos do PowerShell que são executados enquanto a condição for verdadeira.
- A segunda coisa a se observar é que a condição deve retornar um valor booleano, que se avalia como Verdadeiro ou Falso.
Execute o código abaixo, onde o valor de $val
começa em 0
e é incrementado por 1
cada vez que o bloco de código é executado até que o valor da variável $val
seja igual a 3
.
Quando $val
atinge o valor de 3
, tornando a condição Falsa, o loop é interrompido, e a execução continua com o restante do script.

Executando um Loop While no PowerShell com Variáveis Incorporadas ($true
/$false
)
O exemplo anterior, utilizando condições no loop while
, funciona bem. Mas você também pode usar variáveis incorporadas do PowerShell, como $true
e $false
, para criar um loop While
.
A sintaxe abaixo executa até que $true
não seja mais $true
. Em outras palavras, o loop é executado indefinidamente. No entanto, é necessário sempre incluir uma maneira de sair de um loop infinito. Caso contrário, ficará preso indefinidamente. Você aprenderá mais sobre como sair de um loop usando break
e continue
mais tarde neste tutorial.
Execute o bloco de código abaixo, que é executado indefinidamente, imprimindo o valor de $i
no console.
Agora, pressione Ctrl+C para sair do loop. Este loop consome muitos recursos do sistema, portanto, tenha cuidado ao usá-los.

while
loop with PowerShell’s built-in ($true
) variableExecutando Loops While
com Múltiplas Condições
Além dos loops while
de condição única, você também pode criar loops while
de múltiplas condições. Assim como no loop while
de condição única, as condições devem retornar um valor booleano, seja Verdadeiro ou Falso.
Abaixo está a sintaxe para um loop while
de múltiplas condições, similar à sintaxe para um loop while
de condição única. A principal diferença é que você pode incluir múltiplas condições separadas pelos seguintes operadores:
- E (
-e
) – Ambas as condições devem ser verdadeiras. - OU (
-ou
) – Qualquer condição pode ser verdadeira.
Execute o código abaixo, que faz um loop while
enquanto $val
não for igual (-ne
) a 3
-e
$i
não for igual (-ne
) a 5
.
Quando os valores de ambas as variáveis alcançarem suas respectivas condições, o loop é interrompido, e a execução continua com o restante do script.

Executando um while
loop com o operador AND

while
loop with AND operatorAgora, execute o código abaixo, que solicita ao usuário sua idade, armazenada na variável $age
.
Se o usuário inserir um número menor que (-lt
) 1
ou se não for um número (-nomatch
), o usuário é solicitado novamente a inserir um número válido. Esse comportamento é útil para dar aos usuários várias chances de inserir uma entrada válida.
No resultado abaixo, você pode ver que o usuário foi solicitado a inserir sua idade três vezes, conforme a seguir:
- A primeira vez, o usuário digitou dez, que não é um número.
- A segunda vez, o usuário digitou 0, que está abaixo de 1.
- A terceira vez, o usuário digitou 10, que é uma idade válida.

while
loop with the OR operatorUsando as palavras-chave BREAK e CONTINUE em Loops While
Você viu como os loops while
adicionam flexibilidade ao seu script PowerShell. Mas para um melhor controle da execução de seus loops While, adicione as palavras-chave break
e continue
.
Por exemplo, se você quiser processar apenas um certo número de itens em um array, você pode usar a palavra-chave BREAK para sair do loop quando o número desejado de itens tiver sido processado.
Essas palavras-chave funcionam da seguinte forma:
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. |
Execute o código abaixo, que percorre um array de 10 itens.
No código abaixo, a instrução if
verifica o valor de $i
. Se o valor de $i
for 5
, a palavra-chave continue
pula o restante do código no loop e continua com a próxima iteração. Se o valor de $i
for 8
, a palavra-chave break
sai do loop e continua com o restante do script.
Caso contrário, o loop while
imprime (Write-Host
) e incrementa o valor da variável $i
em 1
.
Como você pode ver na saída abaixo, o loop pulou sobre o quinto e o oitavo itens no array. O while
loop processou todos os outros itens no array e saiu após atingir o oitavo item.

while
loop with break
and continue
keywordsLimitando o Tempo de Execução de um Loop While
Normalmente, você pode querer limitar o tempo que um loop é executado. Talvez você esteja tentando se conectar a um servidor remoto. Se for o caso, você pode dar ao servidor tempo para responder antes de expirar e sair do loop usando o cmdlet Start-Sleep
dentro do seu loop while
.
O cmdlet Start-Sleep
pausa a execução do script por um período de tempo especificado.
Execute o código abaixo para obter e armazenar a data e hora atual Get-Date
na variável $startTime
. O loop while
é executado enquanto a data/hora atual for inferior a 10
segundos do valor armazenado em $startTime
.
À medida que o loop while
é executado, uma mensagem é impressa enquanto o cmdlet Start-Sleep
pausa a execução do script por 1
segundo.
O bloco de código abaixo é apenas um modelo para o que você realmente usaria na prática. Você pode adicionar mais código dentro do loop conforme necessário.
Abaixo, você pode ver o loop continuou a ser executado por 10 segundos antes de sair do loop.

while
loop runsConclusão
Os loops while
do PowerShell são úteis quando se depara com conceitos complexos para evitar ficar preso em um loop ou ao escrever seus scripts. E neste tutorial, você aprendeu muitas maneiras de trabalhar com loops while
para scripts mais flexíveis e poderosos.
Com este novo conhecimento, o céu é o limite. Então, por que não maximizar o uso de operadores lógicos e palavras-chave para automatizar tarefas com seus scripts?