Как получить доступ к «настраиваемым» или несистемным полям рабочего места TFS с помощью PowerShell? - PullRequest
3 голосов
/ 16 декабря 2010

При использовании PowerShell для извлечения информации из TFS я обнаружил, что могу получить стандартные поля, но не «пользовательские» поля.Я не уверен, что пользовательский является правильным термином, но, например, если я посмотрю на Process Editor в VS2008 и отредактирую тип рабочего элемента, появятся следующие поля, такие как 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, но не повезло.Как вы получаете доступ к этим "несистемным" полям?

Спасибо

Боз

ОБНОВЛЕНИЕ:

Из ответа Кейта я могу получить нужные мне поля:

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 в WI-Id необходимо, поскольку Id неоднозначен с Field Id.Переименование свойства «Значение поля» дает имя заголовка столбца вместо «Значение».

1 Ответ

3 голосов
/ 21 декабря 2010

В каждом рабочем элементе есть свойство коллекции 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
...