【问题标题】:Suppress console output in PowerShell禁止 PowerShell 中的控制台输出
【发布时间】:2013-09-17 19:48:03
【问题描述】:

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

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

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

由于我不熟悉 PowerShell,我不知道该怎么做。我搜索过 StackOverflow 并在 Google 上搜索了一种方法,找到了很多方法,但都没有奏效。

"> $null" 例如没有效果。我发现 GPG 的 --quiet --no-verbose 选项可以在控制台中减少输出,但它仍然不是完全安静的,我相信 PowerShell 中也有办法。

【问题讨论】:

标签: powershell output suppress-warnings verbosity


【解决方案1】:

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

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

【讨论】:

  • >$null| Out-Null 相同。
  • 也许是这样..但使用此 cmdlet 会更有意义,而不是记住任意“hack”来取消输出。
  • @theyetiman 意见问题,我想。我认为,使用 PowerShell 的内置 Out-Null 在调试别人的代码时读起来会更好,如果已经有一段时间了,甚至是你自己的代码。这也是为上述问题提供的有意功能。
  • 我没想太多,但我认为“ > $null”是“| Out-Null”的别名,让我们 CMD 和 Bash 用户可以快速“破解”使用它。但是考虑到它“| Out-Null”确实使用了管道,因此需要至少一个额外的执行步骤>.....可能是“| Out-Null”是在powershell中进行标准化使用, 并最终覆盖 " > $null" ,这将使 " > $null" 成为更可取的用法。看起来我可能必须更改我当前使用“| Out-Null”的脚本以使用“> $null”。
  • 嗯,只是做了一点谷歌搜索,这个 Stack Exchange 项目似乎表明“> $null”在允许命令执行方面要快得多。 stackoverflow.com/questions/5260125/…
【解决方案2】:

尝试像这样重定向输出:

$key = & 'gpg' --decrypt "secret.gpg" --quiet --no-verbose >$null 2>&1

【讨论】:

  • 在 PowerShell v3 中,他可以像这样重定向所有输出流:*>$null
  • @AnsgarWiechers 也许将其添加为答案,以便它可以收到赞成票。
  • @DanSolovay Nah。这只是戴夫答案的一个小变化。
  • 这绝对是正确的答案。 | out-null 是不够的。
【解决方案3】:

它是 this question 的副本,其答案包含不同方法的时间测量。

结论:使用[void]> $null

【讨论】:

  • 那你为什么不标记为重复呢?
  • 因为我从来没有做过,也不确定。现在它被标记了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2018-12-30
  • 2014-11-26
  • 1970-01-01
相关资源
最近更新 更多