首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Where-Object的意外行为

Where-Object的意外行为
EN

Stack Overflow用户
提问于 2021-02-28 20:36:21
回答 1查看 107关注 0票数 3

我刚刚遇到了一个意想不到的行为

我找不到任何解释:

代码语言:javascript
复制
$foo = $null | Where-Object {$false}
$foo -eq $null
> True


($null, 1 | Measure-Object).Count
> 1

($foo, 1 | Measure-Object).Count
> 1


($null, $null, 1 | Measure-Object).Count
> 1

($foo, $foo, 1 | Measure-Object).Count
> 0

如果条件是

是假的,

应该是

(这似乎是正确的)。

但是,管道

在进入管道的任何值似乎破坏它之前,至少两次。

是什么导致了这种情况?

其他不一致:

代码语言:javascript
复制
($foo, $null, 1 | Measure-Object).Count
> 1

($foo, $null, $foo, 1 | Measure-Object).Count
> 0

($null, $foo, $null, 1 | Measure-Object).Count
> 1

($foo, 1, $foo, $foo | Measure-Object).Count
> 1

($null, $foo, $null, $foo, 1 | Measure-Object).Count
> 0
EN

回答 1

Stack Overflow用户

发布于 2021-03-01 00:53:53

添加到

mklement0

的非常详细和非常欣赏的答案,我想分享我使用的解决方法:

代码语言:javascript
复制
$numbers = 3, 42, 7, 69, 13
$no1 = $numbers | Where-Object {$_ -eq 1}
$no2 = $numbers | Where-Object {$_ -eq 2}
$no3 = $numbers | Where-Object {$_ -eq 3}

而不是通过管道直接将变量传递到

,这不会产生输出...:

代码语言:javascript
复制
$no1, $no2, $no3 | ForEach-Object {$_}
>

..。通过管道传递变量

名字

并利用

要获得所需的结果,请执行以下操作:

代码语言:javascript
复制
'no1', 'no2', 'no3' | ForEach-Object {(Get-Variable $_).Value}
> 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66409155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档