抑制非PowerShell命令的输出?

Geo*_*uer 25 powershell output

我正在运行一个命令

hg st
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ans*_*ers 55

Out-Null使用非PowerShell命令可以正常工作.但是,它不会抑制输出STDERR,仅打开STDOUT.如果要同时禁止输出,则STDERR必须将该文件描述符重定向到STDOUT将输出汇总到Out-Null:

hg st 2>&1 | Out-Null
Run Code Online (Sandbox Code Playgroud)

2>重定向STDERR(文件描述符#2)的所有输出.&1将重定向的输出与STDOUT(文件描述符#1)的输出合并.然后将组合输出打印到STDOUT管道可以将其输入到管道STDIN中的下一个命令(在这种情况下Out-Null).有关Get-Help about_Redirection详细信息,请参阅


小智 8

您可以做的一件有趣的事情是将输出通过管道传输到 Write-Verbose,然后您仍然可以在需要时通过使用 -Verbose 开关运行脚本来查看它。

ping -n 2 $APP 2>&1 | Write-Verbose
Run Code Online (Sandbox Code Playgroud)