azure - 将输出保存到在 Azure-CLI DevOps 任务中不起作用的变量

标签 azure azure-devops azure-cli azure-cli2

尝试将 azure Advisor 建议的输出保存到变量中,以便我可以继续执行下一个任务。

但是,无论我尝试什么语法,并且相信我已经尝试了所有可能的组合,该变量都不会被保存。 有趣的是,这些在 cloud shell (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 任务的工作示例吗?

注意:顺便说一句,我使用 cli 的全部原因是因为找不到 Advisor RM 模块,并且 Az 模块无法在任务版本 4 中正确加载。*

最佳答案

正如 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博客以获取详细的演练。希望这有帮助!

关于azure - 将输出保存到在 Azure-CLI DevOps 任务中不起作用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56269703/

相关文章:

Azure Pipeline - 使用 YAML 将文件从一个存储库复制到另一个存储库

Azure DevOps如何获取任务中的安全变量值

azure-devops - 在 Azure DevOps 管道中运行 NUnit 测试

azure-devops - 在服务器上安装部署 Azure 代理失败 : System. IO.FileNotFoundException : Could not load file or assembly 'DotNetAgent, 版本 = 1.0.0.0

azure - 使用 "az eventgrid system-topic event-subscription"更新高级过滤器时,我应该提供什么端点?

python - CosmosDB 和 Python3 : how to query?

django - 使用 azuread-oauth2 时,exchange_access_token 上的 openEdx 服务器错误

python-3.x - 如何将 Azure-cli 命令的输出保存在变量中

c# - EPPlus:.Net Core 3.1 Azure 函数中找不到 System.Text.Encoding.CodePages.dll

c# - 在本地使用 DefaultAzureCredential 访问 Azure Azure Key Vault(使用 IIS)