我正在运行命令
hg st
然后检查它$LASTEXITCODE
以检查当前目录中mercurial的可用性。我不关心它的输出,也不想向我的用户显示它。
如何抑制所有输出,成功或错误?
由于mercurial不是PowerShell命令行开关hg st | Out-Null
不起作用。
答案 0 :(得分:53)
Out-Null
可以很好地处理非PowerShell命令。但是,它不会仅在STDERR
上抑制STDOUT
上的输出。如果你想抑制STDERR
上的输出,你必须将该文件描述符重定向到STDOUT
,然后再将输出汇总到Out-Null
:
hg st 2>&1 | Out-Null
2>
重定向STDERR
(文件描述符#2)的所有输出。 &1
将重定向的输出与STDOUT
的输出(文件描述符#1)合并。然后将组合输出打印到STDOUT
,管道可以将其输入到管道中下一个命令的STDIN
(在本例中为Out-Null
)。有关详细信息,请参阅Get-Help about_Redirection
。
答案 1 :(得分:4)
您可以做的一件有趣的事情是将输出通过管道传输到Write-Verbose,然后如果您需要它,可以通过使用-Verbose开关运行脚本来查看它。
ping -n 2 $APP 2>&1 | Write-Verbose
答案 2 :(得分:3)