2010-12-16 6 views
3

При использовании PowerShell для извлечения информации из TFS я обнаруживаю, что могу получить стандартные поля, но не «Пользовательские» поля. Я не уверен, что обычай - правильный термин, но, например, если я смотрю на Редактор процессов в VS2008 и редактирую тип Рабочего элемента, есть поля, такие как перечисленные ниже, с Name, Type и RefName:Как получить доступ к полям «Пользовательские» или несистемные файлы TFS с помощью PowerShell?

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, который я называю «Custom» или несистемных полей, например:

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 

Я также пробовал имена в кавычках, полное имя, но не повезло. Как вы получаете доступ к этим «несистемным» полям?

Благодаря

Боза

UPDATE:

От ответа Кита я могу получить поля мне нужно:

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 

Примечание: переименования Id WorkItem к WI-Id необходимому потому что Id неоднозначно с идентификатором поля. Свойство «Переименование полей» дает название заголовка столбца вместо «Значение».

+0

Если этот вопрос не является полезным или неясным, было бы полезно указать, как и почему. Thanks – DaBozUK 2010-12-16 23:17:44

+0

Похоже, вы попали под диск вниз. – Robaticus 2010-12-17 14:07:15

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^