# 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:

```powershell
ForEach-Object -InputObject (Get-Process) -Process { $_ }
```

```powershell
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:

```powershell
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:

```powershell
: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).

```powershell
$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:

```powershell
for (inicialização; condição; ação) {
  # corpo do ciclo
}
```

Exemplo:

```powershell
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:

```powershell
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:

```powershell
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**:

```powershell
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:

{% embed url="<https://fixmypc.ru/post/kak-rabotat-s-tsiklami-v-powershell-foreach-object-i-while-na-primerakh/>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/pt/sherpa-rpa/sherpa-designer/sherpa-designer-otvety-na-chasto-zadavaemye-voprosy/powershell/cikly.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
