Como Sair de Um Objeto Foreach no PowerShell
-
Use a Condição
break
para Sair doForEach-Object
no PowerShell -
Use o
if
ebreak
para Sair doForEach-Object
no PowerShell -
Use o
if
ereturn
para Sair doForEach-Object
no PowerShell -
Use o
if
econtinue
para Sair doForEach-Object
no PowerShell - Conclusão

O cmdlet ForEach-Object
permite ao usuário iterar através de coleções e operar em cada item de uma coleção de objetos de entrada. No ForEach-Object
, os objetos de entrada são enviados para o cmdlet ou especificados usando o parâmetro -InputObject
.
Existem duas maneiras diferentes de construir um comando ForEach-Object
no PowerShell: Bloco de script
e Declaração de operação
. O cmdlet ForEach-Object
executa o bloco de script ou a declaração de operação de cada objeto de entrada.
Use um bloco de script
para especificar a operação. A variável $_
é usada dentro do bloco de script para representar o objeto de entrada atual.
O bloco de script
pode conter qualquer script do PowerShell. Por exemplo, o comando a seguir obtém o valor da propriedade Name
de cada cmdlet, função e aliases
instalados no computador.
Get-Command | ForEach-Object { $_.Name }
Outra maneira de construir o comando ForEach-Object
é usar a declaração de operação
. Você pode especificar um valor de propriedade ou chamar um método com a declaração de operação.
Get-Command | ForEach-Object Name
Às vezes, há situações em que você pode querer sair do ForEach-Object
, mas ele funciona de forma diferente da declaração ForEach
. No ForEach-Object
, a declaração é executada assim que cada objeto é produzido.
Na declaração ForEach
, todos os objetos são coletados antes da execução do loop. O ForEach-Object
é um cmdlet, não um loop real.
Quando você usa break
ou continue
para sair do loop, o script inteiro é encerrado em vez de pular a declaração depois dele. No entanto, é possível sair do objeto ForEach-Object
usando algumas condições no PowerShell.
Use a Condição break
para Sair do ForEach-Object
no PowerShell
No PowerShell, o loop foreach-object
é comumente usado para iterar sobre cada item em uma coleção ou pipeline. Ocasionalmente, surge a necessidade de sair deste loop prematuramente com base em certas condições.
A declaração break
fornece uma maneira direta de fazer isso, encerrando imediatamente o loop quando uma condição específica é atendida.
$numbers = "one", "two", "three", "four", "five"
$Break = $False;
$numbers | Where-Object { $Break -eq $False } | ForEach-Object {
$Break = $_ -eq "three";
Write-Host "The number is $_.";
}
Neste trecho de código, inicializamos um array $numbers
contendo strings representando números. Também definimos $Break
como $False
inicialmente.
Dentro do loop foreach-object
, usamos Where-Object
para filtrar itens com base na variável $Break
. Se $Break
for $False
, o loop continua; caso contrário, ele para.
Dentro do loop, verificamos se o item atual é igual a three
. Se for, configuramos $Break
como $True
, fazendo com que o loop termine.
Saída:
Use o if
e break
para Sair do ForEach-Object
no PowerShell
Às vezes, há necessidade de sair deste loop prematuramente com base em condições específicas. O método if
oferece uma abordagem direta para atingir essa tarefa, avaliando uma condição dentro do loop e acionando uma saída quando a condição é atendida.
Neste método, você precisa usar um valor vazio
em uma coleção de objetos para sair do ForEach-Object
no PowerShell. Por exemplo, você pode usar a condição if
para sair do ForEach-Object
.
$numbers = "one", "two", "three", "", "four"
$numbers | ForEach-Object {
if ($_ -eq "") {
break;
}
Write-Host "The number is $_."
}
No trecho de código fornecido, inicializamos um array $numbers
contendo strings representando números. Dentro do loop foreach-object
, iteramos sobre cada item no array.
Usando a declaração if
, verificamos se o item atual $_
é uma string vazia. Se a condição for verdadeira, usamos break
para sair do loop imediatamente.
Caso contrário, o loop continua e exibimos o número atual usando Write-Host
.
Saída:
Use o if
e return
para Sair do ForEach-Object
no PowerShell
Sair de um loop foreach-object
no PowerShell usando a combinação dos métodos if
e return
permite a terminação prematura do loop com base em condições específicas. Este método é particularmente útil quando você precisa interromper a execução do loop e retornar o controle ao chamador quando uma certa condição é atendida.
Dentro do loop, uma declaração if
é empregada para avaliar a condição para sair do loop. Se a condição for verdadeira, a declaração return
é executada, encerrando imediatamente a execução do loop e retornando o controle ao chamador.
$numbers = "one", "two", "three", "four", "five"
$numbers | ForEach-Object {
if ($_ -eq "three") {
return
}
Write-Host "The number is $_."
}
No trecho de código fornecido, inicializamos um array $numbers
contendo strings representando números. Dentro do loop foreach-object
, iteramos sobre cada item no array.
Usando a declaração if
, verificamos se o item atual $_
é igual a three
. Se a condição for verdadeira, usamos return
para sair do loop imediatamente.
Caso contrário, o loop continua e exibimos o número atual usando Write-Host
.
Saída:
Use o if
e continue
para Sair do ForEach-Object
no PowerShell
No PowerShell, a declaração continue
é usada para pular o restante da iteração atual de um loop e prosseguir para a próxima iteração. Embora seja empregada principalmente em loops para pular iterações específicas, continue
também pode ser utilizada para implementar uma forma de saída do loop dentro de um loop foreach-object
.
Ao posicionar estrategicamente a declaração continue
dentro do loop e incorporar lógica condicional, você pode conseguir a terminação antecipada do loop com base em condições específicas.
$numbers = 1..10
$numbers | ForEach-Object {
if ($_ -eq 5) {
continue
}
Write-Host "Number: $_"
}
No exemplo de código fornecido, inicializamos um array $numbers
contendo números de 1 a 10. Dentro do loop foreach-object
, iteramos sobre cada número no array.
Usando a declaração if
, verificamos se o número atual é igual a 5. Se a condição for verdadeira, a declaração continue
é executada, fazendo com que o loop pule a iteração atual e prossiga para a próxima.
Isso efetivamente alcança a terminação antecipada do loop quando a condição especificada é atendida.
Saída:
Conclusão
Para resumir, o cmdlet ForEach-Object
no PowerShell facilita a iteração através de coleções, permitindo operações em cada item individualmente. Exploramos vários métodos para sair prematuramente de um loop ForEach-Object
, incluindo o uso de break
, return
e continue
.
Enquanto break
e continue
fornecem controle direto do fluxo dentro do loop, return
oferece uma abordagem alternativa para sair do loop e retornar ao chamador. Cada método tem seus próprios casos de uso e benefícios, proporcionando flexibilidade na execução de scripts.
Prosseguindo, os usuários podem aprofundar seu entendimento experimentando esses métodos em diferentes cenários, explorando suas nuances e dominando sua aplicação na scriptação do PowerShell.