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}