无法在DevOps发布管道中使用Azure CLI设置变量

时间:2020-03-17 17:32:00

标签: azure azure-devops

我试图保存一个键值以传递到发布管道中的下一步,但是无论如何我都无法将命令的结果保存到变量中。我已经检查了许多关于此的文章,但都没有成功。这是我正在尝试的:

$KEY=(az storage account show-connection-string --key primary -n myStorageAccount -g myResourceGroup --query "connectionString" -o tsv)

echo "Attempting to set variable"
echo $KEY
echo ##vso[task.setvariable variable=AZURE_STORAGE_CONNECTION_STRING;]$KEY
echo $AZURE_STORAGE_CONNECTION_STRING

顺便在 Windows代理上运行。我尝试了各种变体:SET KEY =,SET $ KEY =,SET $(KEY)=,$ KEY =,$(KEY)=,KEY =,这些都不起作用。同样,我也尝试过在echo语句中以不同的方式引用变量,但是没有运气。如果我只运行az storage account命令,我确实会获得连接字符串。但是无论是我得到了$KEY is not a recognizeable command还是如果我正在使用SET,echo都只会给我返回$KEY而vso行却什么也没有。

我可以通过Azure $KEY=echo $KEY在Azure Cloud Shell中完成大部分工作,包括保存到变量。但这当然无济于事。知道将这个值输入到我的下一个发布管道步骤中的正确语法,还是实现此目的的另一种方法?

1 个答案:

答案 0 :(得分:1)

无法在DevOps发布管道中使用Azure CLI设置变量

如果使用的是 Azure CLI版本1。* ,请尝试使用以下脚本:

for /f "tokens=1 USEBACKQ" %%F in (`Yourcommand`) do echo ##vso[task.setvariable variable=AZURE_STORAGE_CONNECTION_STRING;]%%F

如果使用的是 Azure CLI版本2。* ,则还可以使用powershell命令:

$KEY= & YourCommand
Write-Output("##vso[task.setvariable variable=AZURE_STORAGE_CONNECTION_STRING;]$KEY")

enter image description here

检查this thread了解更多详细信息。

希望这会有所帮助。