2016-11-08 2 views
-1

Используя WIQL (язык запросов рабочих элементов) в PowerShell, я хотел создать отчет по моему проекту Team VSTS, который состоит из деталей рабочего элемента. Связывание отношений всех рабочих элементов под конкретными «Итерационный путь» и «Путь к области». Пример: Epics → Функции → UserStories. Поскольку между Epics есть отношения между родителями и дочерними элементами & Особенности, а также между функциями & UserStories. Таким образом, ввод будет «Итерационный путь» и «Путь к области», а соответствующим выходом будет отчет (.csv или .xls), который содержит все детали этих рабочих элементов и их отношения. Может ли кто-нибудь сообщить мне, как это сделать, используя WIQL в PowerShell?Запросы VSTS WIQL на связанные рабочие элементы в PowerShell

+0

ли вы решить эту проблему с моим решением? –

ответ

0

Простой пример:

#Load TFS PowerShell Snap-in 
    if((Get-PSSnapIn -Name Microsoft.TeamFoundation.PowerShell -ErrorAction SilentlyContinue) -eq $null) 
    { 
     Add-PSSnapin Microsoft.TeamFoundation.PowerShell 
    } 
    #Load Reference Assemblies 
    $Tfs2015AssembliesPath="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer" 
    Add-Type -Path "$Tfs2015AssembliesPath\Microsoft.TeamFoundation.Client.dll" 
    Add-Type -Path "$Tfs2015AssembliesPath\Microsoft.TeamFoundation.Common.dll" 
    Add-Type -Path "$Tfs2015AssembliesPath\Microsoft.TeamFoundation.WorkItemTracking.Client.dll" 
    Function GetWorkItems{ 
     param([string]$teamProjectName,[string]$address) 
     $credentials = New-Object System.Net.NetworkCredential("[user name]", "[password]") 
     $tfsCollection = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection((New-Object System.URI($address))) 
     $wis = $tfsCollection.GetService([Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore]) 
     $wiqlQT="select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] from WorkItemLinks where (Source.[System.TeamProject] = @project and Source.[System.WorkItemType] = 'Epic' and Source.[System.State] <> '' and Source.[System.AreaPath] = 'Agile2015Starain' and Source.[System.IterationPath] = 'Agile2015Starain') and ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward') and (Target.[System.TeamProject] = @project and Target.[System.WorkItemType] <> '') mode (Recursive)" 
     [email protected]{} 
     $variableValues.Add("project", $teamProjectName) 
     $query=New-Object Microsoft.TeamFoundation.WorkItemTracking.Client.Query($wis,$wiqlQT,$variableValues) 
     $witCollection=$query.RunLinkQuery() 

      #logical to save data to excel or csv 

     $wits=New-Object "System.Collections.Generic.List[Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem]" 
     $title="" 
     $id=0 
     Foreach($witItem in $witCollection) 
      { 
       $id=$witItem.SourceId 
       if($id -gt 0) 
        { 
         $parentWorkItem = $wits | where {$_['ID'] -eq $id} 
         $t = $parentWorkItem.Title; 
        } 
        $currentWorkItem = $wis.GetWorkItem($witItem.TargetId); 
        $t = $currentWorkItem.Title; 
        $wits.Add($currentWorkItem); 
      } 
    } 

GetWorkItems "Agile2015Starain" "https://[your vsts name].visualstudio.com" 
Смежные вопросы