Como Sair de Um Objeto Foreach no PowerShell
-
Use a Condição
breakpara Sair doForEach-Objectno PowerShell -
Use o
ifebreakpara Sair doForEach-Objectno PowerShell -
Use o
ifereturnpara Sair doForEach-Objectno PowerShell -
Use o
ifecontinuepara Sair doForEach-Objectno 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.
