PowerShell ForEach-Object

Exemplo

ForEach-Object cmdlet funciona de forma semelhante ao foreach instrução, mas utiliza a entrada de pipeline.

uso Básico

$object | ForEach-Object { code_block}

Exemplo:

$names = @("Any","Bob","Celine","David")$names | ForEach-Object { "Hi, my name is $_!"}

Foreach-Object tem dois aliases padrão, foreach e % (sintaxe abreviada). A mais comum é % porque foreach pode ser confundida com a declaração foreach. Exemplos:

$names | % { "Hi, my name is $_!"} $names | foreach { "Hi, my name is $_!"} 

Avançadas de uso

Foreach-Object destaca-se a alternativa foreach soluções porque é um cmdlet, o que significa que ele foi projetado para usar o pipeline. Devido a isso, ele tem suporte para três scriptblocks, assim como um cmdlet ou função avançada:

  • Begin: executado uma vez antes de looping através dos itens que chegam do pipeline. Usualmente usado para criar funções para uso no loop, criando variáveis, abrindo conexões (banco de dados, web +) etc.processo
  • : executado uma vez que cada item chegou do pipeline. “Normal” em frente ao cadeado. Este é o padrão usado nos exemplos acima quando o parâmetro não é especificado.fim: executado uma vez após o processamento de todos os itens. Normalmente usado para fechar conexões, gerar um relatório, etc.

Exemplo:

"Any","Bob","Celine","David" | ForEach-Object -Begin { $results = @()} -Process { #Create and store message $results += "Hi, my name is $_!"} -End { #Count messages and output Write-Host "Total messages: $($results.Count)" $results}