InvalidOperation при выполнении метода post в PS - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь создать комментарий в ветке Запрос извлечения Azure Devops:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# Variables
$organization = "movieseat"
$project = "pokedex"
$repositoryId = "Pokedex"
$pullRequestId = "97"
$threadId = "283" 

$pat = "Bearer $env:System_AccessToken"

$body = @"
{
    "content"="Finished building feature branch"
    "commentType"="text";
}
"@ 

$postURL = "https://dev.azure.com/$organization/$project/_apis/git/repositories/$repositoryId/pullRequests/$pullRequestId/threads/$threadId/comments?api-version=5.0"
$prComment = Invoke-RestMethod -Uri $postURL -Headers @{Authorization = $pat} -Body $body -Method Post -ContentType 'application/json'

Write-Output $prComment

Но на этапе выпуска я получаю:

Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Value cannot be null.\r\nParameter name: 
comment","typeName":"System.ArgumentNullException, 
mscorlib","typeKey":"ArgumentNullException","errorCode":0,"eventId":0}
At D:\a\r1\a\_Pokedex master\PokeDexArtifact\release\commentURL.ps1:49 char:14
+ ... prComment = Invoke-RestMethod -Uri $postURL -Headers @{Authorization  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
##[error]PowerShell exited with code '1'.
##[section]Finishing: PowerShell Script

Я не могу найти информацию, относящуюся к этой ошибке.

Ответы [ 2 ]

0 голосов
/ 09 июня 2019
{
    "content"="Finished building feature branch"
    "commentType"="text";
}

Это не допустимый JSON.Лучший способ справиться с созданием строк JSON в PowerShell - это использовать ConvertTo-Json в ассоциативном массиве:

$body = @{
 content = 'Finished building feature branch'
 commentType = 'text'
} | ConvertTo-Json -Depth 10
0 голосов
/ 08 июня 2019

Я не уверен на 100%, но я думаю, что это была настоящая ошибка:

сообщение ":" Значение не может быть нулевым. \ R \ nИмя параметра: комментарий ",

$body = @"
    {
        "content": "http://google.com",
        "commentType": "text";
    }
"@ 

Запуск такого кода работает. Обратите внимание на , после значения содержимого. Хотя я удалил значение commentType, так как оно работает и без него.

// редактировать. Я обновил блок кода, заменил = на : в строке содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...