在 PowerShell 中,您可以更改用作迭代块中的项目的变量的名称,例如:
dir -recurse *.snippet -OutVariable snippets
$snippets | Where-Object -PipelineVariable fn { $fn.Length -ge 6000 } | select FullName
该代码不起作用,但您明白我的意思。我认为它不起作用是因为-PipelineVariable
必须在前一个 CmdLet 中指定参数。
我的问题是,我使用什么 CmdLet 来传输内容$snippets
?
即当我仅$snippets
隐式运行它时,仅将内容喷入管道,但是哪个 CmdLet 可以执行此操作?
我已经尝试了很多,很多似乎都在屏幕上输出数组,但是当输入到Where-Object
where 子句中时不起作用,就像它查看外部数组对象实例而不是每个项目一样。
路加
答案1
-PipelineVariable
我想说,只有当管道中有多个步骤时,使用它来保留来自早期管道元素的对象才有意义。
无论如何:在这种情况下我会使用Write-Output
:
Write-Output $snippets -PipelineVariable fn | Where-Object { $fn.Length -ge 6000 }