抑制powershell输出消息

时间:2014-10-01 08:40:11

标签: powershell tfs tfsbuild tfs-power-tools

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

我有以下Powershell命令:

Add-TfsPendingChange -Edit -Item $PathToFolderToCheckout -Recurse

该命令来自TFS 2013 Power Tools。

我尝试了以下但不起作用:

  • 使用-ErrorActionIgonore
  • 添加SilentlyContinue
  • 添加-Out-Null
  • 尝试并清空Catch

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

由于

4 个答案:

答案 0 :(得分:1)

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

您必须使用*>&1 | out-null

结束命令行

例如:

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

我认为它需要在标准输出流中发送到null。试试这个:

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

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

另一种选择可能是设置错误的操作首​​选项。我之前看到cmdlet似乎没有确认-ErrorAction通用参数。

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

答案 3 :(得分:0)

试试这个:

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

2>&1参数会将stderr重定向到stdout>$null参数会将stdout重定向为空,这样就不会显示任何内容。

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

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