抑制PowerShell中的控制台输出

抑制PowerShell中的控制台输出,powershell,output,suppress-warnings,verbosity,Powershell,Output,Suppress Warnings,Verbosity,我在PowerShell脚本中通过以下方式调用了GPG: $key = & 'gpg' --decrypt "secret.gpg" --quiet --no-verbose > $null 我不希望在运行脚本时在主控制台上看到GPG的任何输出 由于我在PowerShell中的无知,我不知道该怎么做。我搜索 StackOverflow和谷歌搜索了一种方法,找到了很多方法,但没有一种有效 例如“>$null”无效。我发现--安静--GPG没有详细的选项来减少控制台中的输出,但它不是

我在PowerShell脚本中通过以下方式调用了GPG:

$key = & 'gpg' --decrypt "secret.gpg" --quiet --no-verbose > $null
我不希望在运行脚本时在主控制台上看到GPG的任何输出

由于我在PowerShell中的无知,我不知道该怎么做。我搜索 StackOverflow和谷歌搜索了一种方法,找到了很多方法,但没有一种有效


例如“>$null”无效。我发现
--安静--GPG没有详细的
选项来减少控制台中的输出,但它不是完全安静的,我相信在PowerShell中也有办法。

尝试将输出重定向到。这样,


$key=&'gpg'--decrypt“secret.gpg”-quiet--no verbose | out null

尝试如下重定向输出:

$key = & 'gpg' --decrypt "secret.gpg" --quiet --no-verbose >$null 2>&1
它是的副本,其答案包含不同方法的时间度量


结论:使用
[void]
$null

>$null
| Out null
的作用相同。可能是这样。但是使用此cmdlet会更有意义,而不是记住任意的“hack”来取消输出。@我想这是一个意见问题。我认为,在调试其他人的代码时,使用PowerShell的内置
Out Null
,甚至在调试您自己的代码时(如果需要一段时间的话),读起来会更好。这也是为上述问题提供的一个有意的函数。我没有考虑太多,但我假设“>$null”是“| Out null”的别名,允许我们CMD和Bash用户快速“破解”使用它。然而,仔细想想,“Out Null”确实使用了一个管道,因此至少需要一个额外的执行步骤。。。。。可能是“| Out Null”是在powershell中进行标准化使用,并最终超越“>$Null”,这将使“>$Null”成为更好的用法。看起来我可能不得不将当前使用“| Out Null”的脚本改为使用“>$Null”。嗯,只是在谷歌上搜索了一下,这个堆栈交换项似乎表明“>$Null”在允许命令执行方面要快得多。在PowerShell v3中,他可以像这样重定向所有输出流:
*>$null
@AnsgarWiechers可能会将其添加为一个答案,这样它就可以接收UPVOLUES。@DanSolovay Nah。这只是Dave答案的一个微小变化。这绝对是正确的答案。|out null还不够。另请参见。。。可能重复的可能重复的。为什么不标记为重复呢?因为我从来没有做过,也不确定。现在它被标记了。