最近,我一直在玩PowerShell,当我使用管道和foreach
循环时,我注意到了一些我无法理解的奇怪行为。
这个简单的代码有效:
$x = foreach ($i in gci){$i.length}
$x | measure -max
有道理。
但是这段代码不会:
foreach ($i in gci){$i.length} | measure -max
我收到以下错误:
An empty pipe element is not allowed.
At line:1 char:33
+ foreach ($i in gci){$i.length} | <<<< measure -max
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement
这两种方法有什么区别,为什么第二种方法失败?
答案 0 :(得分:0)
您需要在管道生成的Object之前评估foreach
,就像在第一次测试中一样:
$(foreach ($i in gci){$i.length}) | measure -max
或者,在使用它之前,使用%
速记来评估它:
gci | % { $_.Length } | measure -max