【发布时间】:2021-03-03 18:31:25
【问题描述】:
我的理解是这样的
$list = @('1', '2', '3', '1', '4')
Select-Object -InputObject $list -Unique
应该返回一个只有 4 个元素的数组,跳过第二个不唯一的“1”。
但我正在恢复所有 5 个元素。我是否理解错了,或者 Select-Object 是否有错误,至少在我正在测试的 PS 5.1 中?
【问题讨论】:
-
'1', '2', '3', '1', '4'|Select-Object -Unique按预期工作。不知何故,使用 -InputObject 会出错。有趣... -
在文档中找到:-InputObject 指定要通过管道发送到 cmdlet 的对象。此参数使您能够将对象通过管道传输到 Select-Object。当您将对象传递给 InputObject 参数时,Select-Object 不使用管道,而是将 InputObject 视为单个对象,即使该值是一个集合。建议您在将集合传递给 Select-Object 时使用管道。
-
@gert-jan-kraaijeveld 很好的发现!还有一个有趣的问题,因为我通常尽可能避免使用管道,因为 1:管道污染是一个问题,2:管道很慢。
标签: powershell parameter-passing pipeline