在Unix shell中,你可以这样写:
hdc.fill();
在Windows Batch中,您可以编写此
( cmd1 ; cmd2 ) | cmd3
在这两种情况下,cmd1和cmd2的输出都传递给stdin上的cmd3。
是否有可能在Powershell中做同样的事情?
我还没有找到允许这种情况的有效语法。我期望一个语句块可以工作,就像这样,但它没有:
( cmd1 & cmd2 ) | cmd3
我可以通过声明一个函数来实现它:
{ cmd1 ; cmd2 ) | cmd3
是否有允许在线完成此操作的语法?
答案 0 :(得分:2)
我认为这有效:
Invoke-Command {cmd1; cmd2} | cmd3
Invoke-Command cmdlet在本地或远程计算机上运行命令 并返回命令的所有输出,包括错误。
...
您还可以在本地计算机上使用Invoke-Command进行评估或运行 脚本块中的字符串作为命令。 Windows PowerShell转换 脚本阻止命令并立即运行命令 当前范围,而不是仅在命令行回显字符串。
答案 1 :(得分:0)
您可以直接调用powershell来生成一个真正的子shell(即,子shell不会修改外壳的状态):
pwsh -Command { cmd1 ; cmd2 } | cmd3
由于powershell将对象而不只是字符串作为输入,因此-Command
参数可以采用脚本块。