通过 Powershell 将多个参数发送到 Azure-Devops 管道作业

send multiple parameter to Azure-Devops pipeline job via Powershell

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

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

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

我发送到 Invoke-RestMethod 的正文是:

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

这行得通,但上面的行不通:

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

$b = $body  | ConvertTo-Json

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

谢谢

请试试这个:

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

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

$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