抑制非PowerShell命令的输出?

时间:2013-05-24 22:25:54

标签: powershell output

我正在运行命令

hg st

然后检查它$LASTEXITCODE以检查当前目录中mercurial的可用性。我不关心它的输出,也不想向我的用户显示它。

如何抑制所有输出,成功或错误?

由于mercurial不是PowerShell命令行开关hg st | Out-Null不起作用。

3 个答案:

答案 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)

也可以这样做

hg st *> $null

Powershell suppress console output