Por que o ForEach-Object se comporta de maneira diferente quando chamado como foreach?

3

No PowerShell, foreach e % são aliases padrão para ForEach-Object . No entanto, parece que o comando se comporta de maneira diferente dependendo de como é chamado.

Particularmente, é difícil conseguir que o comando funcione sem inseri-lo no pipeline, a menos que eu esteja usando especificamente o foreach alias.

Existe algo que estou fazendo errado aqui, ou isso é por design por algum motivo?

    
por Iszi 13.11.2013 / 17:16

1 resposta

6

A instrução foreach e o Cmdlet Foreach-Object NÃO é a mesma coisa.

Por um:

In the case of the Foreach-Object, the statement body is executed as soon as each object is produced. In the foreach statement, all the objects are collected before the loop body begins to execute. This has two implications

Também há diferenças de desempenho e sintaxe.

$i = @(1..3) | ForEach-Object {Write-Host $_}

Funciona no Foreach-Object.

    
por 13.11.2013 / 17:25

Tags