2016-11-08 1 views
-1

Использование REST API для VSTS в PowerShell, я хотел создать отчет о моем проекте Team VSTS, который состоит из деталей рабочего элемента. Связывание отношений всех рабочих элементов под конкретным «Итерацией» Path "и" Area Path ".Запросы API VSTS Rest для связанных рабочих элементов в Powershell

Ex: Epics→Features→UserStories. Поскольку между Epics есть отношения между родителями и дочерними элементами & Особенности, а также между функциями & UserStories.

Таким образом, ввод будет Iteration Path и Area Path, а соответствующим выходом будет отчет (.csv или .xls), который содержит все детали этих рабочих элементов и их отношения.

Может ли кто-нибудь сообщить мне, как достичь этого, используя API REST в PowerShell?

Я написал код для получения иерархических рабочих элементов в Team Project, но вам нужно изменить его, чтобы отфильтровать список на основе заданных путей итерации и области. Также при выполнении приведенного ниже кода сравнение строк в запросе (из-за наличия ') возвращает ошибку в силовой оболочке.

Ошибка: Invoke-RestMethod: { "считать": 1, "значение": { "Сообщение": "После анализа значения неожиданный персонаж встречается: Г. Путь 'запрос', строка 1, положение 163. \ г \ п "}}

$vstsAccount = "xxxx" 
$projectName = "xxxx" 
$user = "xxxx" 
$token = "xxxx" 

# Base64-encodes the Personal Access Token (PAT) appropriately 
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token))) 

# Construct the REST URL to obtain Build ID 
$uri = "https://$($vstsAccount).visualstudio.com/$($projectName)/_apis/wit/wiql?api-version=1.0" 

$body = "{'query': 'Select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] From WorkItemLinks WHERE 
((Source.[System.TeamProject] = '$projectName' and Source.[System.State] <> 'Removed') and (Source.[System.WorkItemType] = 'Epic') and 
([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward') and (Target.[System.WorkItemType] = 'UserStory') mode(Recursive)'}" 

# Invoke the REST call and capture the results (notice this uses the POST method) 
$result = Invoke-RestMethod -Uri $uri -Method Post -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $body 
+0

это не выглядит, как вы сделали основное расследование или даже дали этому попытку сам? Кто-то вряд ли опубликует полное решение для вас. Как насчет того, чтобы вы отдали его себе и отправили обратно за помощью, заполняя пробелы? –

+0

Вы решаете проблему с моим решением? –

ответ

0

Изменить часть вашего кода, как это:

$body = @{query="Select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] From WorkItemLinks WHERE 
    (Source.[System.TeamProject] = '$projectName' and Source.[System.State] <> 'Removed') and (Source.[System.WorkItemType] = 'Epic') and 
    ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward') and (Target.[System.WorkItemType] = 'UserStory') mode (Recursive)"} 
    [email protected]($body) | ConvertTo-Json 
    $result = Invoke-RestMethod -Uri $uri -Method Post -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $bodyJson 
+0

@ starain..Спасибо за информацию. – Srini33

+0

@ Srini33 Вы можете отметить это как ответ, если мой ответ решает вашу проблему. –

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

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