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

Powershell Azure DevOps在通过脚本设置管道变量时是否删除引号?,powershell,azure-devops,arm-template,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]。 但是当我在设置变量后的下一个

我必须在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代码直接更新了我的文件。

您可以尝试使用以下字符串:

$foo=@ [酒吧] @ Azure DevOps在通过脚本设置管道变量时是否删除引号

此问题并非来自azure devops,而是取决于下一个任务的语法

如果我使用命令行任务输出该变量,它可以正常工作:

echo $(fooVariableInPipeline)
输出:

但是,如果我们使用powershell任务输出它,它将删除引号:

Write-Host "fooVariableInPipeline is $(fooVariableInPipeline)"
输出:

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

现在,它运行良好:

echo $(fooVariableInPipeline)

希望这能有所帮助。

我自己也遇到过这个问题

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

在powershell中:

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

你能告诉我们接下来的任务是什么吗?问题是什么?下面的答案是否解决了您的问题,如果是,您可以,这样可以帮助其他社区成员解决同样的问题,我们可以存档此线程,谢谢。