Ciclos#
Comando ForEach-Object#
Foreach-Object é um comando para processamento de fluxos de dados.
Foreach-Object é aplicado para processamento linha a linha de elementos à medida que eles chegam ao fluxo de entrada:
ForEach-Object -InputObject (Get-Process) -Process { $_ }
Get-Process | ForEach-Object { $_.Name }
Get-Process | % { $_.Name } # % — alias para ForEach-Object
Get-Process | foreach { $_.Name } # alias da palavra-chave foreach
Os operadores break e continue não funcionam com ForEach-Object, pois não é um ciclo no sentido tradicional, mas sim um processamento de objeto em um pipeline.
Ciclo Foreach#
O ciclo Foreach é um ciclo para processamento de coleções.
O ciclo foreach itera sobre uma coleção:
foreach ($item in $array) {
# ações com $item
}
O operador continue pula o restante da iteração atual e passa para a próxima.
O operador break interrompe completamente o ciclo.
Para sair de ciclos aninhados, pode-se usar um rótulo:
:outer foreach ($i in $array1) {
foreach ($j in $array2) {
if (<condição>) { break outer }
}
}
Método ForEach#
O método ForEach() em PowerShell é um método de coleções (por exemplo, arrays, listas) que permite executar um script ou ação especificada para cada elemento da coleção. Ele é chamado em um objeto de coleção, aceita um bloco de script e aplica-o sequencialmente a todos os elementos, passando o elemento atual para a variável especial $PSItem (equivalente a $_ em pipelines).
$collection.ForEach({
# Aqui $PSItem é o elemento atual da coleção
Write-Output $PSItem
})
Esse método é conveniente quando é necessário executar uma ação para elementos da coleção sem usar o ciclo foreach ou o comando ForEach-Object.
Ciclo For#
O ciclo For é um ciclo iterativo clássico.
A sintaxe é semelhante a linguagens do tipo C:
for (inicialização; condição; ação) {
# corpo do ciclo
}
Exemplo:
for ($i = 1; $i -le 10; $i++) {
Write-Host $i
}
O operador continue pula o restante da iteração atual e passa para a próxima.
O operador break interrompe completamente o ciclo.
Ciclos While e Do-While#
O ciclo While é um ciclo com pré-condição. While primeiro verifica a condição e depois executa o corpo:
while ($a -le 10) {
$a++
}
O ciclo Do-While é um ciclo com pós-condição. Do-While primeiro executa o corpo e depois verifica a condição:
do {
$i++
} while ($i -le 10)
A execução se repete enquanto a condição for verdadeira.
O operador continue pula o restante da iteração atual e passa para a próxima.
O operador break interrompe completamente o ciclo.
Ciclo Do-Until#
O ciclo Do-Until executa o corpo e depois verifica a condição para falsidade:
do {
$i++
} until ($i -le 10)
Ele repete o corpo enquanto a condição NÃO for satisfeita.
O operador continue pula o restante da iteração atual e passa para a próxima.
O operador break interrompe completamente o ciclo.
Trabalhando com ciclos#
Você pode conferir exemplos de uso no link: