我必须在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代码直接更新了文件。
答案 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
输出:
但是,如果我们使用echo $(fooVariableInPipeline)
任务来输出它,它将删除引号:
powershell
输出:
要解决此问题,我们需要将变量用单引号括起来以使其成为文字字符串,例如:
Write-Host "fooVariableInPipeline is $(fooVariableInPipeline)"
现在,它工作正常:
希望这会有所帮助。
答案 1 :(得分:1)
我自己遇到了这个问题。
一种解决方法是使用两个双引号。
在powershell中:
$foo -replace '"', '""'
答案 2 :(得分:0)
您可以尝试在这里输入字符串:
auditctl -l