当使用PowerShell从TFS中提取信息时,我发现我可以访问标准字段而不是“自定义”字段。我不确定自定义是正确的术语,但是例如,如果我查看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不明确。 重命名Fields Value属性会给出一个列标题名称而不是“Value”。
答案 0 :(得分:3)
每个工作项中都有一个Fields集合属性,似乎包含所有工作项字段和值。像这样访问它:
Get-TfsItemHistory . -r -vers "D12/14/2010~" |
Where {$_.WorkItems.count -gt 0} | Select -Expand workitems |
Select @{n='WIT-Id';e={$_.Id}},Title -Expand Fields |
Where {$_.ReferenceName -eq 'Microsoft.VSTS.Common.ActivatedBy'} |
Format-Table Value,WIT-Id,Title -auto