相关疑难解决方法(0)

如何输入多行命令

是否可以将PowerShell命令行拆分为多行?

在Visual Basic中,我可以使用下划线(_)继续下一行中的命令.

powershell multiline

379
推荐指数
8
解决办法
35万
查看次数

Powershell 无法从标准输入运行多行命令?

我想通过标准输入将任意脚本传递给 Powershell。(在实践中,我想避免将脚本放入临时文件中,但出于这个问题的目的,我会将文件的内容通过管道传输到 powershell。)

所以我正在做这样的事情(在这个例子中,从 Windows cmd shell):

type myfile.txt | powershell -
Run Code Online (Sandbox Code Playgroud)

如果 myfile.txt 包含这样的内容,它会起作用:

1..3 | % { $_ *2 } 
echo done  
Run Code Online (Sandbox Code Playgroud)

(它输出2\n4\n6\ndone.)但是,如果我像这样将第一个语句拆分成多行,那么 Powershell 只是存在而根本不生成任何输出:

1..3 | 
  % { $_ *2 } 
echo done  
Run Code Online (Sandbox Code Playgroud)

对于任何多行语句,这似乎都失败了。例如,这也无法产生输出:

1..3 | % {
  $_ *2 } 
echo done  
Run Code Online (Sandbox Code Playgroud)

我对此感到惊讶,因为每个都是合法的 Powershell 脚本,如果放入 .ps1 文件并正常运行,它们将正常工作。

我尝试了各种方法,包括使用行继续符转义 EOL,但无济于事。如果父 shell 是 Powershell,甚至是 Python(使用 subprocess.Popen 和 stdin=PIPE),也会出现同样的效果。在每种情况下,Powershell 都没有任何错误地退出,退出代码为 0。

有趣的是,如果我运行以下命令,只会创建“before.txt”。

"before" | out-file before.txt
1..3 | 
   % { $_ *2 } 
"after" | out-file after.txt …
Run Code Online (Sandbox Code Playgroud)

powershell stdin multiline

6
推荐指数
2
解决办法
984
查看次数

标签 统计

multiline ×2

powershell ×2

stdin ×1