【发布时间】:2011-05-26 17:09:48
【问题描述】:
当使用 PowerShell 从 TFS 中提取信息时,我发现我可以获取标准字段,但不能获取“自定义”字段。我不确定 custom 是不是正确的术语,但是例如,如果我查看 VS2008 中的 Process Editor 并编辑 Work Item 类型,则会出现如下所列的字段,包括 Name、Type 和 RefName:
Title String System.Title
State String System.State
Rev Integer System.Rev
Changed By String System.ChangedBy
我可以使用 Get-TfsItemHistory 访问这些:
Get-TfsItemHistory "$/path" -Version "D01/12/10~" -R
| Select -exp WorkItems | Format-Table Title, State, Rev, ChangedBy -Auto
到目前为止一切顺利。
但是,WorkItem 类型中还有一些其他字段,我称之为“自定义”或非系统字段,例如:
Activated By String Microsoft.VSTS.Common.ActivatedBy
Resolved By String Microsoft.VSTS.Common.ResolvedBy
并且下面的命令不检索数据,只是空格。
Get-TfsItemHistory "$/path" -Version "D01/12/10~" -R
| Select -exp WorkItems | Format-Table ActivatedBy, ResolvedBy -Auto
我也尝试过引号中的名称,完全限定的 refname,但没有运气。您如何访问这些“非系统”字段?
谢谢
博兹
更新:
从 Keith 的回答中我可以得到我需要的字段:
Get-TfsItemHistory "$/Hermes/Main" -Version "D01/12/10~" -Recurse `
| Select ChangeSetId, Comment -exp WorkItems `
| Select ChangeSetId, Comment, @{n='WI-Id'; e={$_.Id}}, Title -exp Fields `
| Where {$_.ReferenceName -eq 'Microsoft.VSTS.Common.ResolvedBy'} `
| Format-Table ChangesetId, Comment, WI-Id, Title, @{n='Resolved By'; e={$_.Value}} -Auto
注意事项: 需要将 WorkItem 的 Id 重命名为 WI-Id,因为 Id 与 Field Id 不明确。 重命名字段值属性会给出一个列标题名称,而不是“值”。
【问题讨论】:
-
如果这个问题没有用或不清楚,说明如何或为什么会很有帮助。谢谢
-
看起来你被开车投反对票了。
-
非常感谢反对票。
标签: powershell tfs