为什么我必须按两次 Enter 才能执行 Foreach-Object Cmdlet?

Why do I have to press enter twice to execute the Foreach-Object Cmdlet?

编者注:
* 这个问题归结为:在PowerShell命令行上输入多行命令时,为什么要按回车两次提交了吗? 解释原因。
* 当来自 脚本 的 运行 时,关于同一命令也需要 Enter 击键的部分是基于误解 - 该命令不需要击键,它只是 还是运行宁

我将对象通过管道传递给 Foreach-Object Cmdlet,我注意到当我从脚本中 运行 它时,它就在那里,当我通过键入 运行 它时我最终不得不在最后一个花括号后按两次 enter 才能让它再次工作。

gci $path -recurse | %{ 
    ...
}
echo "test"

有没有办法避免这种情况?这样代码就保持 运行ning?

当您逐行向 PowerShell 命令 window 键入脚本时,它需要一种方法来知道您已完成输入脚本,因此输入空行是提示它 运行 脚本。为避免这种情况,请在同一行中键入所有内容:

gci $path -recurse | %{ $_ } ; echo "test"