在PowerShell中抑制控制台输出

Dom*_*tal 46 powershell verbosity suppress-warnings output

我在PowerShell脚本中以下列方式调用GPG:

$key = & 'gpg' --decrypt "secret.gpg" --quiet --no-verbose > $null
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,我不希望在主控制台上看到GPG的任何输出.

由于我在PowerShell中的高通,我不知道该怎么做.我搜索了Stack Overflow并用谷歌搜索了一种方法来做到这一点,找到了很多方法来做到这一点,但是没有它起作用.

例如,"> $ null"无效.我发现--quiet --no-verboseGPG 的选项可以在控制台中输出更少的输出,但它并不完全安静,我相信PowerShell也有一种方法.

von*_*ryz 79

尝试将输出重定向到Out-Null.像这样,

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

  • 也许是这样..但是使用这个cmdlet更有意义,而不是记住任意"hack"来取消输出. (7认同)
  • `> $ null`与`|相同 OUT-Null`. (3认同)
  • @theyetiman我想是很重要的意见.我认为,使用PowerShell内置的"Out-Null",在调试别人的代码时甚至是自己的代码会更好.这也是为上述问题提供的有意功能. (2认同)
  • 嗯,只是做了一点谷歌搜索,这个 Stack Exchange Item 似乎表明“> $null”在允许命令执行方面要快得多。http://stackoverflow.com/questions/5260125/whats-the-better-cleaner-way-to-ignore-output-in-powershell (2认同)

Dav*_*ton 29

尝试重定向输出,如下所示:

$key = & 'gpg' --decrypt "secret.gpg" --quiet --no-verbose >$null 2>&1
Run Code Online (Sandbox Code Playgroud)

  • 在PowerShell v3中,他可以重定向所有输出流,如下所示:`*> $ null`. (20认同)
  • 这绝对是正确的答案。| out-null 还不够。 (2认同)

Dir*_*irk 6

这是这个问题的副本,答案包含不同方法的时间测量。

结论:使用[void]> $null

  • 那你为什么不标记为重复呢? (4认同)
  • 因为我从来没有做过,也不确定。现在它已被标记。 (2认同)