Skip to content

FOR…FOREACHE…WHILE

Daniel Donda edited this page Mar 23, 2018 · 1 revision

Além do controle de condicional, você pode querer fazer o uso de looping para executar repetidamente um determinado comando e para cada tipo de valor fazer uma determinada execução. Resumindo – Você pode querer fazer um PING para cada endereço IP terminando com 1 até o 245.

Os controles de looping no PS podem ser executados de muitas maneiras, com os comandos:

  • For
  • ForEach
  • While
  • Do While
  • Do Until

FOR

O mais simples é o cmdlet FOR.

for (inicio; condição; proximovalor) {Código de repetição}
for ($a=1; $a -le 10; $a++) {echo 192.168.1.$a}

FOREACH

O ForEach é mais utilizado para executar cada item em uma coleção de informação, seja uma informação coletada em um comando ou filtro ou dados em um array.
A sintaxe do Foreach é bem simples:

ForEach ($variavel e items da coleção) {código de execução}
foreach ($numeros in 1,2,3,4,5,6,7,8,9,10) { $numeros }

Agora que você conhece os recursos IF, ELSE, FOR e ForEach, você pode combinar e começar a ter resultados bem interessantes e poderosos.

foreach ($file in Get-ChildItem) {
if ($file.IsReadOnly) {
Write-Host $file.FullName }
}

O Windows PowerShell entende que a estrutura criada deve exibir cada valor. Ou seja ele usa automaticamente o Foreach. Veja, você pode usar o script:

$process = Get-Process
$processos = $process | foreach { $_.name }
$processos

Ou

$processo = Get-Process
$processo.name

Você pode usar o ForEach de diversas maneiras. Vamos supor que você deseja “matar” vários processos do Notepad. Você usa o comando Get-Process e “para cada” processo do Notepad você mata.

Get-process Notepad | foreach kill

WHILE

$i = 1
while ($i -le 5)
{
$i++ ;$i
}