Я использую это как основу для своего скрипта:
https://www.nwcadence.com/blog/vststfs-rest-api-the-basics-and-working-with-builds-and-releases
И мой сценарий выглядит следующим образом
Param(
[string]$vstsAccount = "abc",
[string]$projectName = "abc",
[string]$user = "",
[string]$token = "xyz"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$verb = "POST"
$body = @"{
"definition": {
"id": 20
}
}"@
$uri = "https://$($vstsAccount).visualstudio.com/DefaultCollection/$($projectName)/_apis/build/builds?api-version=4.1"
$result = Invoke-RestMethod -Uri $uri -Method $verb -ContentType "application/json" -Body (ConvertTo-Json $body) -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Но у меня есть синтаксические ошибки в определении тела, которое я использовал из сообщения в блоге выше.
> o characters are allowed after a here-string header but before the end
> of the line. At C:\Users\abc\Documents\vstsqueuebuild.ps1:18 char:17
> + "definition": {
> + ~ Unexpected token ':' in expression or statement. At C:\Users\abc\Documents\vstsqueuebuild.ps1:19 char:14
> + "id": 20
> + ~ Unexpected token ':' in expression or statement. At C:\Users\anc\Documents\vstsqueuebuild.ps1:21 char:1
> + }"@
> + ~ Unexpected token '}' in expression or statement. At C:\Users\abc\Documents\vstsqueuebuild.ps1:24 char:9
> + $uri = "https://$($vstsAccount).visualstudio.com/DefaultCollection/$( ..





Сообщение об ошибке дает вам подсказку: «Никакие символы не допускаются после заголовка здесь-строки, но до конца»
Измените код так, чтобы за маркерами начала / конца здесь не сразу следовало / не предшествовало ничто:
$body = @"
{
"definition": {
"id": 20
}
}
"@
Здесь-строки - это специальные строки, которые сохраняют любое форматирование (новые строки, табуляции и т. д.). Получите дополнительную информацию здесь: about_Quoting_Rules
Есть несколько способов изменить здесь-строку (значение переменной $body):
$body = @{
definition = @{
id = 20
}
}
$body = @"
{
"definition": {
"id": 20
}
}
"@
Как упоминает boxdog.
$body = '
{
"definition": {
"id": 20
}
}
'
Я понятия не имел, что означает заголовок здесь, спасибо