Quando você usa scripts do PowerShell para gerenciar sistemas ou processar tarefas em massa, sem dúvida encontrará a necessidade de usar uma estrutura de loop como parte de seus scripts. Existem muitos tipos de loops disponíveis no PowerShell, e um deles é o loop for. O loop for do PowerShell pode executar rapidamente o mesmo conjunto de comandos em vários itens e produzir resultados consistentes.
Neste artigo, você aprenderá o que é o loop for no PowerShell, entenderá sua sintaxe e o que compõe uma instrução de loop for. Você também aprenderá, a partir dos exemplos, algumas das diferentes maneiras de usar o loop for.
Compreendendo a Declaração de Loop for do PowerShell e os Espaços Reservados
O loop for do PowerShell é comumente usado quando o número de vezes (contagem de iterações) que um comando ou processo precisa ser executado já é conhecido. Um exemplo seria quando você deseja processar apenas um subconjunto de valores em uma matriz (por exemplo, processar apenas 10 de um número X de itens).
O uso de um loop for dá mais controle sobre limites e condições sobre quando o código deve sair. Isso é comparado com o loop foreach ou o cmdlet ForEach-Object
, onde a iteração pára após o último item na coleção ter sido processado.
Abaixo está a sintaxe da declaração de loop for para sua referência.
Como você pode ver na sintaxe acima, a declaração de loop for do PowerShell pode ser dividida em quatro espaços reservados que você deve conhecer. Estes são os espaços reservados Inicial, Condição, Repetição e Lista de Instruções.
- O marcador Inicial é onde você especifica um valor inicial. Este valor é lido apenas uma vez pela declaração. Tipicamente, os roteiristas atribuem essa variável com um valor de zero.
- O marcador Condição especifica o limite ou condição para determinar se o loop deve continuar ou terminar. A expressão usada neste marcador avalia-se como verdadeira.
- O marcador Repetição aceita vários comandos. Os comandos fornecidos neste marcador são executados após cada repetição do loop e antes que a Condição seja reavaliada. Os roteiristas geralmente usam isso para fornecer uma expressão para incrementar ou decrementar o valor no marcador Inicial.
- Por fim, o marcador Lista de declarações é onde o código principal que você pretende executar será colocado. O código dentro deste marcador é repetido em um loop até que a Condição retorne um valor de
$Falso
.
Entendendo o Fluxo de Execução do Loop For do PowerShell
Para entender melhor como o loop for do PowerShell funciona, você precisa se familiarizar com seu fluxo de execução. Um loop for é inicialmente um processo de quatro etapas, depois se torna um processo de três etapas após a execução inicial. Para explicar melhor, continue lendo o algoritmo abaixo.
PASSO 1
No início da declaração do loop for, o valor Inicial é lido e armazenado na memória.
Exemplo: $num = 0
PASSO 2
A instrução de loop for avalia o resultado booleano da expressão dentro do marcador Condição. Se o resultado for $false
, o loop for é encerrado. Se o resultado for $true
, então o loop for continua para o próximo passo.
Exemplo: $num -lt 10
PASSO 3
O PowerShell executa o código dentro do marcador Lista de declarações. Pode haver um ou mais comandos, blocos de script ou funções.
Exemplo: "Eu conto $num "
PASSO 4
Neste passo, a expressão no marcador Repetir é executada, o que atualizará o valor atual do marcador Inicial. Então, o fluxo voltará para o Passo 2.
Exemplo: $num++
Usando o Loop for do PowerShell (Exemplos)
As próximas seções serão alguns exemplos de como usar o loop for de várias maneiras. Esses exemplos podem ou não ter uso prático ou vida real como estão. Mas as técnicas que você aprenderá podem orientá-lo no uso do loop for, caso você encontre uma necessidade real de fazê-lo.
Agora que você tem uma ideia de como o loop for funciona, é hora de ver como tudo se junta usando código básico.
Obtendo uma Sequência de Números
O código abaixo exibe a string "Eu conto $num"
repetidamente no console, começando em 1 até que o valor de $num
alcance 10.
Quando você copia o código acima e o cola em sua sessão do PowerShell para executá-lo, a captura de tela abaixo mostra o resultado.

Concatenando Strings
A instrução do loop for não se limita apenas a expressões matemáticas como adição, subtração ou multiplicação. Também pode ser usada para concatenar valores de string.
O exemplo abaixo irá repetir a letra “x” em cada linha, sendo que cada linha terá um caractere a mais que a anterior até que o número de caracteres na linha alcance 30.
Como pode ser observado, o valor de $x
foi iniciado com ''
, que contém zero caracteres. O limite com base na condição é atingido quando o número de caracteres no valor de $x
chega a 30. Após cada iteração, mais uma letra “x” é anexada ao valor de $x
.
A saída abaixo mostra o resultado esperado quando o código acima é executado no PowerShell.

Concatenando Strings com Múltiplas Expressões Iniciais e de Repetição
Os espaços reservados Inicial e Repetir na instrução do loop for podem aceitar múltiplas expressões.
Usando o código no exemplo anterior, o código pode ser modificado para adicionar uma nova expressão no espaço reservado de Repetir para escolher uma cor aleatória. A cor aleatória será então usada como a cor de primeiro plano da string a ser exibida no console.
Como pode ser observado na primeira linha, um array contendo nomes de cores é definido. A operação do loop for escolherá aleatoriamente um nome de cor deste array.
Observe que os espaços reservados Inicial e Repetir agora têm duas expressões. Cada expressão está contida entre parênteses e separada por uma vírgula.
Depois que o código modificado é executado no PowerShell, o resultado esperado é mostrado abaixo.

Exibindo o Progresso
Talvez o uso mais comum do loop for seja para mostrar indicadores de progresso. Isso é geralmente utilizado ao executar tarefas para vários itens que podem levar tempo para serem concluídas. Por exemplo, criar um relatório para todos os tamanhos de caixa de correio em sua organização do Exchange, ou atualizar atributos de vários usuários no Active Directory.
O código de exemplo abaixo mostra a maneira básica de mostrar o progresso de 1 a 100%. Como você verá, o valor inicial do $counter
é 1, e a condição indica que este loop será executado até que o valor do $counter
atinja 100.
Quando você executar o código acima no PowerShell, você deverá ver uma saída semelhante, como mostrado abaixo.

Exibindo um Temporizador de Contagem Regressiva
O próximo código mostra como usar o loop for para exibir um temporizador de contagem regressiva. Este temporizador de contagem regressiva mostra apenas os segundos restantes, começando em 10.
Se você quiser alterar o número inicial, basta alterar o valor da variável $seconds
no marcador Inicial.
Ao executar o código acima no PowerShell, você obterá a saída de exemplo abaixo.

Exibindo um Temporizador de Contagem Regressiva (Loop For Aninhado)
E se você quiser exibir o temporizador de contagem regressiva usando o formato minutos:segundos
? O loop aninhado pode ser usado para realizar isso. Um loop for aninhado é simplesmente definido como um loop for dentro de outro loop for e assim por diante.
O código de exemplo abaixo contém duas instruções de loop for.
O primeiro loop for lida com a contagem regressiva da parte minuto do temporizador. Como você pode ver, há uma variável $minutos
antes do loop for onde você precisa indicar o número de minutos que o loop for fará a contagem regressiva.
O segundo loop for lida com a contagem regressiva da parte segundos do temporizador. Após cada iteração, o loop pausa por 1 segundo antes de continuar. Ele continuará a fazer isso até que o valor de $segundos
alcance 0.
Quando o código acima é executado, veja como o temporizador de contagem regressiva ficaria.

Determinando um Número Primo
O loop for do PowerShell também é uma boa escolha para operações matemáticas. Neste exemplo, o loop for é usado para determinar se um número dado é um número primo.
A prime number is a number that is only divisible by 1 and N, where N is the number itself. For example, if the value of N is 7, then N divided by 1
is 7 divided by 1
.
O script abaixo, quando executado, realizará o seguinte:
- Solicitar ao usuário para inserir um número.
- Realizar divisão usando o número de entrada como o dividendo, e os divisores são os números de 2 até o número de entrada menos 1. Isso significa que se o valor de entrada for 7, os divisores serão 2, 3, 4, 5 e 6, respectivamente.
- Se o quociente for um número inteiro, isso significa que o número de entrada não é um número primo e, em seguida, o loop for será encerrado.
- Se o quociente não for um número inteiro, isso significa que o número de entrada é um número primo.
Copie e salve este script como isPrime.ps1
Depois de salvar o script isPrime.ps1
, execute-o no PowerShell para testar. Para demonstração, veja a saída de exemplo abaixo.

Resumo
O loop for no PowerShell não traz surpresas quando comparado ao funcionamento dos loops for usados em outras linguagens – o que torna mais fácil adaptar-se se você não é novo no conceito.
Neste artigo, você aprendeu o básico da instrução de loop for no PowerShell. Você aprendeu sobre sua sintaxe, lógica, fluxo e até aprendeu com vários exemplos sobre como usá-lo para diferentes fins.
Lembre-se de que, mesmo que haja outros tipos de loops no PowerShell, é injusto dizer que um é melhor que o outro. Tudo depende do propósito do código e da preferência de quem o escreve.
Usando o conhecimento adquirido deste artigo, você deverá ser capaz de encontrar maneiras de aplicar o loop for com mais frequência para automatizar suas tarefas tediosas usuais.