Suppress output from non-PowerShell commands?

穿精又带淫゛_ 提交于 2019-12-09 04:39:02

问题


I am running a command

hg st

and then checking it's $LASTEXITCODE to check for availability of mercurial in the current directory. I do not care about its output and do not want to show it to my users.

How do I suppress ALL output, success or error?

Since mercurial isn't a PowerShell commandlet hg st | Out-Null does not work.


回答1:


Out-Null works just fine with non-PowerShell commands. However, it doesn't suppress output on STDERR, only on STDOUT. If you want to suppress output on STDERR as well you have to redirect that file descriptor to STDOUT before piping the output into Out-Null:

hg st 2>&1 | Out-Null

2> redirects all output from STDERR (file descriptor #2). &1 merges the redirected output with the output from STDOUT (file descriptor #1). The combined output is then printed to STDOUT from where the pipe can feed it into STDIN of the next command in the pipline (in this case Out-Null). See Get-Help about_Redirection for further information.




回答2:


A fun thing you can do is to pipe the output to Write-Verbose, then you can still see it if you need it by running your script with the -Verbose switch.

ping -n 2 $APP 2>&1 | Write-Verbose



回答3:


Can also do this

hg st *> $null

Powershell suppress console output



来源:https://stackoverflow.com/questions/16744451/suppress-output-from-non-powershell-commands

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!