PowerShell - Alterando o nome do PipelineVariable

2

No PowerShell, você pode alterar o nome da variável usada como item em um bloco iterativo, como:

dir -recurse *.snippet -OutVariable snippets

$snippets | Where-Object -PipelineVariable fn { $fn.Length -ge 6000 } | select FullName

Esse código não funciona, mas você tem a ideia. Eu acho que não funciona porque o argumento -PipelineVariable deve ser especificado no CmdLet anterior.

Minha pergunta é, qual CmdLet eu uso para canalizar o conteúdo de $snippets ?

i.e. quando acabo de executar $snippets , implicitamente apenas expele o conteúdo para o pipeline, mas o que o CmdLet faz isso?

Eu experimentei muitos, e muitos parecem produzir o array na tela, mas quando canalizado para a cláusula Where-Object the where não funciona, é como se ele estivesse olhando para a instância do objeto de matriz externa e não para cada item .

Luke

    
por Luke Puplett 27.05.2014 / 13:29

1 resposta

2

Eu diria que só faz sentido usar -PipelineVariable se você tiver mais de uma etapa no pipeline, para preservar o objeto de elementos de pipeline anteriores.

De qualquer forma: neste caso eu usaria Write-Output :

Write-Output $snippets -PipelineVariable fn | Where-Object { $fn.Length -ge 6000 }
    
por 27.05.2014 / 14:06

Tags