首页 > 解决方案 > 通过 Powershell 向 Azure-Devops 管道作业发送多个参数

问题描述

我能够启动 Azure Devops Build 作业并发送一个文本参数,但我似乎只能发送一个参数而不是更多。我需要发送一个有效的令牌参数 Ok,但我还想发送一个文本参数,其中包含要由构建作业中的 Powershell 脚本处理的 json 有效负载。所以我有一个 Hellow World 定义设置,在管道变量中有两个变量。第一个是tokentext,第二个是jsonInput。两者都选中了“可在排队时设置”复选框。我在作业定义中有一个 PowerShell 内联脚本:

Write-Host "Hello World"
Write-Host "tokentext: $(tokentext) `n"

Write-Host "Json Input"
Write-Host "---------------------------------------------------"
$(jsonInput)

我发送到 Invoke-RestMethod 的 Body 是:

$body = @{ 
definition = @{
    id = $buildDefID
}    
parameters = "{`"tokentext`" :$mytoken}
              {`"jsonInput`" :$j}  
"
}
$b = $body  | ConvertTo-Json

这有效,但上述无效:

$body = @{ 
definition = @{
    id = $buildDefID
}    
parameters = "{`"tokentext`" :$mytoken}
"
}

$b = $body  | ConvertTo-Json

我试过用逗号分隔参数等。我尝试过的所有孩子。如果有人从脚本向构建定义中的变量发送多个参数,我肯定会使用一些帮助。

谢谢

标签: azure-devopsazure-devops-rest-api

解决方案


下面的请求正文对我有用。请检查一下。

$body = @{
  definition= @{id = $buildDefID};

  parameters ="{`"jsonInput`":`"$jsonInput`", `"tokentext`":`"$tokentext`"}"
 }
$b = $body  | ConvertTo-Json

您还可以通过Runs - Run Pipeline rest api 运行您的管道,这不太复杂。

POST https://dev.azure.com/{organization}/{project}/_apis/pipelines/{pipelineId}/runs?api-version=6.1-preview.1

pipelineId是个$buildDefID

您可以将参数放在请求正文中,如下所示:

 $body=@{
     
     variables = @{
 
         jsonInput= @{value = $jsonInput};
     
         tokentext= @{value = $tokentext}
      }
  }

$b = $body  | ConvertTo-Json

推荐阅读