将JSON变量传递给AzureDevops版本定义

时间:2020-04-12 12:30:15

标签: json azure powershell azure-devops azure-pipelines

我的目标是使用AzureDevops管道变量将JSON对象从一台计算机传递到另一台计算机。 该过程以一个Powershell脚本开始,该脚本获取JSON对象并将其压缩为:

$json=[{"test":"foo","bar":"hello}]

请注意,它将始终是一个数组。 现在,我将azure变量设置为:

Write-Host "##vso[task.setvariable variable=Json]$json"

现在该变量已在发布管道BUT中初始化,双引号不会转义。 这意味着当我尝试在下一个脚本中获取$(Json)时,它当然会由于无效字符而失败。我的问题是,如何避免使用双引号?我试过在字符串的开头和结尾添加单引号,但是它不起作用。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试使用以下格式的JSON文件:

$json = @"
[
  {
    "op": "add",
    "path": "/fields/System.Title",
    "value": "Bug22"
  },
  {
    "op": "add",
    "path": "/fields/Microsoft.VSTS.Common.Severity",
    "value": "3 - Medium"
  }
]
"@ | ConvertTo-Json -Compress

答案 1 :(得分:1)

在使用管道变量之前,您是否尝试过将其包装在此处?

$json = @"
    $(Json)
"@