通过脚本设置管道变量时,Azure DevOps是否会删除引号?

时间:2020-05-12 07:37:03

标签: powershell azure-devops arm-template

我必须在Azure DevOps管道中为ARM模板设置一个数组。我将变量设置如下:


$foo = '["' + 'bar' + '"]'
Write-Host $foo
#######Assign Variables with Correct Value in pipeline
Write-Host "##vso[task.setvariable variable=fooVariableInPipeline]$foo"

$ foo值可以正常使用,该值为[“ bar”]。 但是,当我在设置变量后在下一个任务中检查该值时,它将删除引号并将该值显示为[bar]。

这很奇怪,我想知道是我还是错误?有解决方法吗?

暂时,我已经使用Powershell代码直接更新了文件。

3 个答案:

答案 0 :(得分:1)

通过脚本设置管道变量时,Azure DevOps是否会删除引号?

此问题并非来自天蓝色的开发人员,而是取决于您下一个任务的语法。

如果我使用 Territory territory = new Territory(); territory.TerritoryDescription = "Test"; territory.TerritoryID = "Test"; territory.RegionID = 1; TransferJson objTrf= new TransferJson(); objTrf.json= territory; objTrf.Id = 1; objTrf.IsChanged = false; var SerializeData = JsonConvert.SerializeObject(objTrf); var DeserializeData= JsonConvert.DeserializeObject<TransferJson>(SerializeData); var TerritoryData = DeserializeData.json as Territory; // i am getting null here var Rawobject= DeserializeData.json as object; // i am also not proper getting data here 任务来输出该变量,它将正常工作:

command line

输出:

enter image description here

但是,如果我们使用echo $(fooVariableInPipeline) 任务来输出它,它将删除引号:

powershell

输出:

enter image description here

要解决此问题,我们需要将变量用单引号括起来以使其成为文字字符串,例如:

Write-Host "fooVariableInPipeline is $(fooVariableInPipeline)"

现在,它工作正常:

enter image description here

希望这会有所帮助。

答案 1 :(得分:1)

我自己遇到了这个问题。

一种解决方法是使用两个双引号。

在powershell中:

$foo -replace '"', '""'

答案 2 :(得分:0)

您可以尝试在这里输入字符串:

auditctl -l