尝试将azure顾问程序建议的输出保存到变量中,以便我可以继续执行下一个任务。
但是,无论我尝试使用哪种语法,并且相信我我都尝试了所有可能的组合,都不会保存该变量。 有趣的是,这些工作在云外壳(bash)中 例如。
rgName="$(az group list --query "[?tags.Test=='yes'].name" --output tsv)"
az group show -n $rgName
这在Cloud Shell中可以正常工作。但不是在DevOps azurecli任务中。 我还提到了堆栈溢出本身中给出的多个示例,但是它们都不起作用。 使用任务版本1。*
rgName' is not recognised as an internal or external command,
有人可以为DevOps Task给出一个可行的例子吗?
注意:顺便说一句,我使用cli的全部原因是因为无法找到Advisor RM模块,而Az模块在任务版本4中无法正确加载。*
答案 0 :(得分:0)
如上文Shayki所述,task.setvariable
可以帮助您从脚本中设置变量。 this文档中对此进行了详细说明。简而言之,您将必须执行以下操作:
rgName=$(az group list --query "[?tags.Test=='yes'].name" -o tsv | tr '\n' ' ')
echo "##vso[task.setvariable variable=RESULT]$rgName"
task.setvariable
是一个日志记录命令,不会更新环境变量,但是会使新变量可用于同一作业中的下游步骤。请注意,结果用CRLF分隔而不是空格,因此修剪tr '\n' ' '
。现在,在需要变量的后续任务中,可以按以下方式使用它:
echo "Result: $(RESULT)"
请参阅this博客以获取详细的演练。希望这会有所帮助!
答案 1 :(得分:0)
对我来说,解决此问题的方法是使用Linux代理作业而不是Windows代理,然后添加Azure CLI任务以在Linux代理(特别是ubuntu-16.04)上运行。