我刚刚遇到了一个意想不到的行为
我找不到任何解释:
$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如果条件是
是假的,
应该是
(这似乎是正确的)。
但是,管道
在进入管道的任何值似乎破坏它之前,至少两次。
是什么导致了这种情况?
其他不一致:
($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发布于 2021-03-01 00:53:53
添加到
mklement0
的非常详细和非常欣赏的答案,我想分享我使用的解决方法:
$numbers = 3, 42, 7, 69, 13
$no1 = $numbers | Where-Object {$_ -eq 1}
$no2 = $numbers | Where-Object {$_ -eq 2}
$no3 = $numbers | Where-Object {$_ -eq 3}而不是通过管道直接将变量传递到
,这不会产生输出...:
$no1, $no2, $no3 | ForEach-Object {$_}
>..。通过管道传递变量
名字
至
并利用
要获得所需的结果,请执行以下操作:
'no1', 'no2', 'no3' | ForEach-Object {(Get-Variable $_).Value}
> 3https://stackoverflow.com/questions/66409155
复制相似问题