5

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

我有以下 Powershell 命令:

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse

该命令来自 TFS 2013 Power Tools。

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

  • 添加-ErrorActionIgonore_SilentlyContinue
  • 添加-Out-Null
  • 尝试清空 Catch

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

谢谢

4

4 回答 4

1

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

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

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

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

$ErrorActionPreference = 'SilentlyContinue'
Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse
$ErrorActionPreference = 'Continue'
于 2014-10-01T14:49:57.457 回答
1

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

您必须以 *>&1 | out-null

举个例子:

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

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

于 2015-09-16T16:44:12.927 回答
0

尝试其中之一:

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
于 2014-10-01T09:20:54.423 回答
0

尝试这个:

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

2>&1参数重定向stderr到并且参数重定向stdout到null 所以不会显示任何内容。>$nullstdout

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

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse 2>$null
于 2014-10-01T15:08:57.737 回答