【问题标题】:Suppress powershell output messages禁止 powershell 输出消息
【发布时间】:2014-11-26 01:24:01
【问题描述】:

我有一个 TFS 2013 Update 2 构建服务器。当我构建一个项目时,我会签出一些文件,更改一些内容并再次签入。这很好用。 唯一的问题是当有人签出其中一个文件时,构建服务器会将其视为错误并且构建将部分成功。实际上它只是一条信息消息,但构建将其视为错误。如何隐藏这些消息?

我有以下 Powershell 命令:

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse

该命令来自 TFS 2013 Power Tools。

我尝试了以下方法,但它不起作用:

  • -ErrorAction 添加到IgonoreSilentlyContinue
  • 添加-Out-Null
  • 尝试清空 Catch

为每个文件抛出的消息是: 文件路径:在工作区中打开编辑;Ralph Jansen

谢谢

【问题讨论】:

    标签: powershell tfs tfsbuild tfs-power-tools


    【解决方案1】:

    我相信它需要在标准输出流中才能被发送到 null。试试这个:

    $Null = Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse *>&1 
    

    *>&1 将所有输出重定向到标准输出,$null 是为此目的保留的变量。它比管道输出到空值更有效。

    另一种选择是设置错误的操作首​​选项。我以前见过 cmdlet 似乎不承认 -ErrorAction 通用参数。

    $ErrorActionPreference = 'SilentlyContinue'
    Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse
    $ErrorActionPreference = 'Continue'
    

    【讨论】:

    • 你能张贴你在说什么的截图吗?这会很有帮助。
    【解决方案2】:

    经过一番努力,我成功地为我们的 Tfs 构建获得了它! \o/

    你必须以*>&1 | out-null结束命令行

    例如:

    Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse *>&1 | out-null
    

    副作用是导致错误的所有消息都丢失了。

    【讨论】:

      【解决方案3】:

      尝试以下方法之一:

      Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse -ErrorAction SilentlyContinue -wa 0 | Out-null
      

      [void](Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse -ErrorAction SilentlyContinue -wa 0)
      

      您还可以将 cmdlet 的结果分配给变量(并且不对其执行任何操作):

      $throwaway = Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse -ErrorAction SilentlyContinue -wa 0
      

      【讨论】:

      • 虚假输出是什么样的?如果是警告,您可以将-wa 0 切换到上述命令之一,然后重试
      • 输出只是我在上面的问题中所说的消息......我猜如果你签出一个已经签出的文件,它与 Visual Studio 的输出窗口中出现的消息相同其他人...只是信息/警告消息...
      • -wa switch 尝试修改后的答案。
      【解决方案4】:

      试试这个:

      Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse 2>&1 >$null
      

      2>&1 参数将 stderr 重定向到 stdout>$null 参数将 stdout 重定向到 null,因此不会显示任何内容。

      或者,如果您只想隐藏发送到 stderr 的数据,只需将其重定向:

      Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse 2>$null
      

      【讨论】:

      • 我没有使用TFS,所以无法直接测试你的命令。你能给我们看一下正在发生的事情的截图吗?
      猜你喜欢
      • 2013-09-17
      • 2013-05-20
      • 2021-02-03
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多