我试图保存一个键值以传递到发布管道中的下一步,但是无论如何我都无法将命令的结果保存到变量中。我已经检查了许多关于此的文章,但都没有成功。这是我正在尝试的:
$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中完成大部分工作,包括保存到变量。但这当然无济于事。知道将这个值输入到我的下一个发布管道步骤中的正确语法,还是实现此目的的另一种方法?
答案 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")
检查this thread了解更多详细信息。
希望这会有所帮助。