Como Sair de Um Objeto Foreach no PowerShell

  1. Use a Condição break para Sair do ForEach-Object no PowerShell
  2. Use o if e break para Sair do ForEach-Object no PowerShell
  3. Use o if e return para Sair do ForEach-Object no PowerShell
  4. Use o if e continue para Sair do ForEach-Object no PowerShell
  5. Conclusão
Como Sair de Um Objeto Foreach no PowerShell

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:

sair do objeto foreach no powershell - saída 1

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:

sair do objeto foreach no powershell - saída 2

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:

saída do objeto foreach no powershell - saída 3

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:

sair do objeto foreach em powershell - saída 4

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.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Artigo relacionado - PowerShell Object