Ошибка неверного запроса при попытке создать рабочий элемент в VSTS с помощью Powershell - PullRequest
0 голосов
/ 09 января 2019

Я пробовал много способов обойти эту ошибку, я создал PAT из своей учетной записи VSTS и включил это в скрипт. Однако вызов API REST возвращает сообщение «Удаленный сервер возвратил ошибку: (400) неверный запрос».

Используя тот же PAT, я получаю информацию из VSTS, используя метод GET, но он не создает рабочий элемент.

Я предоставляю аутентификацию, выполнив шаги

$Creds = [Text.Encoding]::ASCII.GetBytes(":$Token")
$Creds = [System.Convert]::ToBase64String($Creds)
$Headers = @{
    Authorization = ("Basic {0}" -f $Creds)
}

и прохождение остальных, следуя шагам

Invoke-RestMethod -Uri $Uri -Method POST -Headers $Headers -Body $Body -ContentType $ContentType

Тело получает свои значения из CSV и хранится в $ values ​​

foreach ($value in $values)
{
   $PBIName = $value.Name
   $Resource = $value.Resource
   $Body        = "[
            {
                `"op`": `"add`",
    `"path`": `"/fields/System.Title`",
    `"value`": `"$($PBIName)`"
            }
            {
                `"op`": `"add`",
    `"path`": `"/fields/System.AreaPath`",
    `"value`": `"InfraEng\DCO`"
            }
            {
          `"op`": `"add`",
    `"path`": `"/fields/System.IterationPath`",
    `"value`": `"InfraEng`"
            }
            {
                     `"op`": `"add`",
    `"path`": `"/fields/System.AssignedTo`",
    `"value`": `"$($Resource)`"
            }]"

| ConvertTo-Json

и URI выглядит следующим образом

$ Uri = "https://[xxxx].visualstudio.com/InfraEng/_apis/wit/workitems/`$product элемент журнала невыполненных работ? Api-версия = 1.0"

когда я пытаюсь перехватить ответ при запуске Invoke-RestMethod, я получаю следующее

IsMutuallyAuthenticated: False Файлы cookie: {VstsSession =% 7B% 22PersistentSessionId% 22% 3A% 2248171d3c-4c0f-413f-9143-59e6e50047c3% 22% 2C% 22PendingAuthenticationSessionId% 22% 3A% 22 00000000-0000-0000-0000-000000000000% 22% 2C% 22CurrentAuthenticationSessionId% 22% 3A% 2200000000-0000-0000-0000-000000000000% 22% 7D} Заголовки: {Pragma, X-TFS-ProcessId, Strict-Transport-Security, ActivityId ...} SupportsHeaders: True ContentLength: 373 ContentEncoding: ContentType: application / json; кодировка = UTF-8 Набор символов: utf-8 Сервер: Последнее изменение: 9/9/2019 9:35:03 StatusCode: BadRequest StatusDescription: Bad Request ProtocolVersion: 1.1 ResponseUri: https://[xxxx].visualstudio.com/InfraEng/_apis/wit/workitems/$product элемент журнала ожидания? Api-version = 1.0 Метод: ПОСТ IsFromCache: False

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Я не обязательно думаю, что это проблема с вашей авторизацией. Я ожидаю, что вы, вероятно, получите другую ошибку, особенно если вы можете использовать заголовок в GET.

Это работает для меня:

$Cred = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$pat"))
$Headers = @{
    Authorization = ("Basic {0}" -f $Cred)
}

Invoke-RestMethod -Uri 'https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$Test Case?api-version=4.1' -Method PATCH -Header $Headers -Body '[{"op": "add","path": "/fields/System.Title","from": null,"value": "Sample test case"}]' -ContentType 'application/json-patch+json'
0 голосов
/ 09 января 2019

Я думаю, что ваша проблема с $Body, но это не входит в вопрос.

Проверить эту страницу - https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/work%20items/create?view=azure-devops-rest-5.0

...