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

Nil*_*lay 8 powershell azure-devops azure-rm-template

我必须在 Azure DevOps 管道中为 ARM 模板设置一个数组。我这样设置我的变量:


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

Run Code Online (Sandbox Code Playgroud)

$foo 值很好,如预期的那样是 ["bar"] 。但是,当我在设置变量后检查下一个任务中的值时,它会删除引号并将值显示为 [bar]。

这很奇怪,我想知道这是我的问题还是一个错误?有什么解决方法吗?

目前,我已经直接使用 powershell 代码更新了我的文件。

Leo*_*SFT 5

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

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

如果我使用该command line任务输出该变量,它工作正常:

echo $(fooVariableInPipeline)
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

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

Write-Host "fooVariableInPipeline is $(fooVariableInPipeline)"
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

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

$Testfoo= '$(fooVariableInPipeline)'

Write-Host "Testfoo is $Testfoo"
Run Code Online (Sandbox Code Playgroud)

现在,它工作正常:

在此输入图像描述

希望这可以帮助。