PowerShell é uma linguagem de script poderosa que oferece muitos recursos para automação e gerenciamento de sistemas baseados no Windows. Uma das construções mais comumente usadas é 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 sua grande escapada. 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 while
loop com uma única condição:
- A primeira coisa que você notará é o uso de parênteses. A condição deve estar entre 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 notar é que a condição deve retornar um valor booleano, que avalia para 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
, o que torna a condição Falsa, o loop é interrompido e a execução continua com o restante do script.

Executando o Loop While no PowerShell com Variáveis Embutidas ($true
/$false
)
O exemplo anterior, usando condições no loop while
, funciona bem. Mas você também pode usar as variáveis embutidas 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 roda para sempre. Mas você deve sempre incluir uma maneira de sair de um loop infinito. Caso contrário, você ficará preso para sempre. Você aprenderá mais sobre como sair de um loop usando break
e continue
mais adiante neste tutorial.
Execute o bloco de código abaixo, que roda para sempre, imprimindo o valor de $i
no console.
Agora, pressione Ctrl+C para sair do loop. Este loop consome muitos recursos do sistema, então tenha cuidado ao usá-los.

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

Executando um loop while
com operador E

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 não for um número (-nomatch
), o usuário será 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.
Na saída abaixo, você pode ver que o usuário foi solicitado a inserir sua idade três vezes, conforme segue:
- Na primeira vez, o usuário inseriu dez, o que não é um número.
- Na segunda vez, o usuário inseriu 0, que está abaixo de 1.
- Na terceira vez, o usuário inseriu 10, que é uma idade válida.

while
loop with the OR operatorUsando as Palavras-chave BREAK e CONTINUE em Laços While
Você viu como os laços while
adicionam flexibilidade ao seu script PowerShell. Mas para melhor controlar a execução dos seus laços While, adicione as palavras-chave break
e continue
.
Por exemplo, se você deseja processar apenas um certo número de itens em um array, você pode usar a palavra-chave BREAK para sair do laço quando o número desejado de itens foi 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
ignora o restante do código no laço e continua com a próxima iteração. Se o valor de $i
for 8
, a palavra-chave break
sai do laço e continua com o resto do script.
Caso contrário, o laço while
imprime (Write-Host
) e incrementa o valor da variável $i
em 1
.
Como você pode ver no resultado abaixo, o loop pulou os itens cinco e oito 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
Geralmente, 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 atingir o tempo limite e sair do loop, utilizando 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 atuais Get-Date
na variável $startTime
. O loop while
é executado enquanto a data/hora atual for menor que 10
segundos do valor armazenado em $startTime
.
Enquanto 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 que 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 ao lidar 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 os loops while
para scripts mais flexíveis e poderosos.
Com esse conhecimento recém-adquirido, 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?