【发布时间】:2013-05-20 14:45:08
【问题描述】:
我正在运行一个命令
hg st
然后检查它的 $LASTEXITCODE 以检查当前目录中的 mercurial 可用性。我不关心它的输出,也不想向我的用户展示它。
如何抑制所有输出、成功或错误?
由于 mercurial 不是 PowerShell 命令行开关,hg st | Out-Null 不起作用。
【问题讨论】:
标签: powershell output
我正在运行一个命令
hg st
然后检查它的 $LASTEXITCODE 以检查当前目录中的 mercurial 可用性。我不关心它的输出,也不想向我的用户展示它。
如何抑制所有输出、成功或错误?
由于 mercurial 不是 PowerShell 命令行开关,hg st | Out-Null 不起作用。
【问题讨论】:
标签: powershell output
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 了解更多信息。
【讨论】:
2>&1 语法的实际含义吗?
2>&1 表示“将标准错误重定向到与标准输出相同的位置。”
您可以做的一件有趣的事情是将输出通过管道传输到 Write-Verbose,然后您仍然可以通过使用 -Verbose 开关运行脚本来查看它。
ping -n 2 $APP 2>&1 | Write-Verbose
【讨论】:
【讨论】:
hg
*> 重定向运算符在 PowerShell v3 之前不可用。