Olá pessoal! Tudo bem? Espero que sim!

Antes de tudo, um feliz 2020 para todos e que este ano esteja repleto de realizações bem sucedidas para vocês!

Sentiram a minha falta? Após uma breve pausa, vamos retomar a nossa jornada de introdução a automações com Powershell ainda abordando o tópico de Loops. Hoje vamos falar de um operador que indica ação e de outros dois que impõem condições, e quando combinados, nos permitem criar estruturas de repetições de bloco de comandos condicionais.

Os operadores de repetição Do, Until e While se complementam.  O operador Do executa um bloco de comandos quantas vezes for necessário, de acordo com as condições impostas pelo operador par (While ou Until). Já o While, indica um teste condicional que permitirá a repetição do bloco de comandos especificado no Do enquanto a condição não for atendida. O operador Until, assim como o While, também indica um teste condicional, que por sua vez permitirá a repetição do bloco de comandos especificado no Do até a condição ser atendida.

Podemos combiná-los da seguinte forma: Do-Until e Do-While.

Do-Until

Executa um bloco de comandos até o resultado do teste condicional ser Verdadeiro.

Sintaxe: Do { <instruções> } Until ( <teste condicional> )

Exemplo:

Obs: Quando declaramos uma variável com um número inteiro e em seguida a invocamos adicionando “++“, incrementamos em 1 (uma unidade inteira) o valor do número inteiro armazenado na variável.

Exemplo:

Após esta observação, acredito que fique mais claro o que acontece a cada rodada do loop.

No exemplo acima, declaramos o número inteiro 0 à variável $i. Em seguida, utilizamos o cmdlet Write-Host para escrever uma frase seguida do valor da variável $i, então incrementamos uma unidade inteira ao valor da variável $i. A nossa condição é que o valor de $i seja maior que 5, logo, o script realizou a operação repetidamente até o valor da variável $i atingir um número maior que 5, ou seja, no final da quinta repetição o script parou, pois, após o incremento de número inteiro nesta repetição, o valor da variável $i se tornou 6, fazendo com que a condição imposta se tornasse verdadeira.

Do-While

Executa um bloco de comandos enquanto o resultado do teste condicional for Verdadeiro.

Sintaxe: Do { <instruções> } While ( <teste condicional> )

Exemplo:

No exemplo acima, utilizamos a mesma condição imposta no exemplo do Do-Until, contudo, o resultado não percorreu até o número 5. Isto ocorreu, porque para realizar a repetição, a condição imposta é que o valor de $i seja maior que 5. Desta forma, realizamos a seguinte leitura: enquanto o valor de $i for maior que 5, repita as instruções declaradas no Do. Como o valor inicial de $i é 0, a condição se tornou Falsa e a repetição foi abortada.

Neste caso, para fazer com que o bloco de scripts percorra os numerais até chegar ao número 5, é necessário ajustar a condição para que seja atendida. Basicamente se alterarmos o valor inicial de $i para 6 ou qualquer valor acima de 5, ou mesmo alterando o operador condicional -gt (maior que) para -lt (menor que), a repetição acontecerá devido à condição imposta no While se tornar verdadeira.

Acredito que agora ficou fácil, não!?

Conclusão

A aplicabilidade do Do-Until e Do-While são várias. Imagine por exemplo uma tarefa que precisa ser executada enquanto um determinado processo estiver em execução. Você poderia por exemplo, realizar uma combinação do Do-While e Get-Process para estruturar uma rotina que execute determinados comandos enquanto um processo existir, ou estiver consumindo determinado KPI de recursos computacionais, entre outras diversas combinações. Ou mesmo uma rotina que execute até o momento em que determinado arquivo seja gerado (neste caso, poderíamos utilizar o Do-Until). A idéia é que você entenda que um operador complementa o outro e juntos, com uma boa imaginação e pensamento estruturado, basta desenvolver o seu bloco de scripts em harmonia que o sucesso se dará. Enquanto a lógica fizer sentido pelo interpretador, não haverá erros.

É isso aí galera, por hoje é só. Até o próximo post!

Dúvidas, sugestões, críticas? Entre em contato aqui!

Gostou? Deixe seu comentário e não se esqueçam de curtir a página do Facebook na barra lateral!