为什么可以';您不能从任何powershell语句(foreach、while等)中导出吗?
为什么不能从任何powershell语句(如foreach和while)进行管道传输(“不允许使用空管道元素”)?是否存在一些工程限制为什么可以';您不能从任何powershell语句(foreach、while等)中导出吗?,powershell,debugging,pipe,statements,Powershell,Debugging,Pipe,Statements,为什么不能从任何powershell语句(如foreach和while)进行管道传输(“不允许使用空管道元素”)?是否存在一些工程限制 PS /Users/me> foreach ($i in 1,2,3) { $i } | measure At line:1 char:30 + foreach ($i in 1,2,3) { $i } | measure + ~ An empty pipe element is not allo
PS /Users/me> foreach ($i in 1,2,3) { $i } | measure
At line:1 char:30
+ foreach ($i in 1,2,3) { $i } | measure
+ ~
An empty pipe element is not allowed.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement
PS /Users/me> for ($i = 1;$i -lt 10; $i++) { $i } | measure
At line:1 char:37
+ for ($i = 1;$i -lt 10; $i++) { $i } | measure
+ ~
An empty pipe element is not allowed.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement
PS /Users/me> $i = 1
PS /Users/me> while ($i -lt 10 ) { $i;$i++ } | measure
At line:1 char:32
+ while ($i -lt 10 ) { $i;$i++ } | measure
+ ~
An empty pipe element is not allowed.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement
powershell语句列表:
如果。。否则
开关
做。。当
弗雷奇
为了
当
中断
继续正如您所注意到的,PowerShell语言语句不会输出到管道(因此出现错误-“不允许使用空管道元素”)。以下是两种可能的解决方法:
$()
(子表达式)运算符包装语句。例如:
$(foreach ($i in 1,2,3) { $i }) | Measure-Object
& { foreach ($i in 1,2,3) { $i } } | Measure-Object
{}
中(即,使其成为脚本块),并使用&
(调用/调用)操作符调用它。例如:
$(foreach ($i in 1,2,3) { $i }) | Measure-Object
& { foreach ($i in 1,2,3) { $i } } | Measure-Object
两者之间的区别在于scriptblock语法创建了一个新的作用域,因此当调用完成时,该作用域内的变量将被释放。在上述两个示例中,这意味着
$i
是在执行第一个示例之后定义的,而不是在执行第二个示例之后定义的。这种差异可能有用,这取决于您尝试做什么。(例如,在使用PowerShell命令行时,我更喜欢使用第二种语法,以避免临时变量污染当前作用域。)Get ChildItem-Path C:\\\124; ForEach对象{$\uU0.BaseName}
您实际想要实现什么?您显示的语句不返回对象;因此,管道没有任何迹象。可能是“语法中我们无法解决的歧义”的重复