【问题标题】:How to use PowerShell Where-Object to return TFS changesets that have no workitems assigned?如何使用 PowerShell Where-Object 返回未分配工作项的 TFS 变更集?
【发布时间】:2011-05-27 05:29:18
【问题描述】:

我有以下 PowerShell 命令来检索具有关联工作项的 TFS 变更集:

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
  | Select ChangesetId -exp WorkItems 
  | Format-Table ChangesetId, Id, Title -Auto

但是,我还需要查看没有分配工作项的变更集。我想我可以执行以下操作(根据以下建议进行修改):

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
  | Select ChangesetId -exp WorkItems 
  | Where-Object {$_.WorkItems -eq $null }

但是这似乎忽略了我的 where 子句并返回与第一个命令相同的变更集列表。

谢谢

博兹

更新:

根据下面的建议,我尝试了:

Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
  | Where-Object {$_.WorkItems -eq $null }

这不会返回任何行。然而,将 -eq 换成 -ne 确实会返回行(但显然不是我想要的)。

【问题讨论】:

    标签: powershell tfs


    【解决方案1】:

    选择对象仅返回您请求的字段。因此,如果您在选择之前使用 where-object,那么当它到达 where 对象时,您不会在管道中看到和反对它应该可以工作。

    【讨论】:

    • 谢谢,我按照你的建议尝试了(实际上,我没有选择我相信的),但是现在仍然很幸运,不,我没有得到任何行。
    【解决方案2】:

    WorkItems 字段实际上是一个集合或工作项,所以空检查是错误的,但是计数 0 项有效:

    Get-TfsItemHistory "$/path" -Version "D01/12/10~" -Recursive 
      | Where-Object {$_.WorkItems.Count -eq 0 }
    

    此外,Where 和 Select 的顺序也很重要,正如上面“重新运行”用户指出的那样,谢谢。

    博兹

    【讨论】:

      猜你喜欢
      • 2022-10-07
      • 2011-05-26
      • 1970-01-01
      • 2013-01-01
      • 2011-10-07
      • 2023-01-18
      • 1970-01-01
      • 2016-04-15
      • 2015-05-21
      相关资源
      最近更新 更多