azure-devops - VSTS (Azure DevOps) 管道中的动态变量名称

标签 azure-devops azure-powershell

我有一个名为 TestVariable 的管道变量。

我可以像这样从 PS 脚本轻松访问此变量:

write-host $(TestVariable)

但如果该变量的名称是动态的,我有什么方法可以从 PS 访问变量值吗?

例如,变量的名称将进入字符串变量。我已经尝试过这些组合作为实验……它们只返回变量名,而不是值(不足为奇):

$varname="TestVariable"

write-host $($varname)
write-host $("$varname")
write-host $"($varname)"
write-host $("($varname)")

我认为答案是否定的,但我想确定一下。非常感谢任何帮助!

编辑 - 注释

两个答案都回答了问题,但没有解决我的问题。在尝试了这些解决方案之后,我意识到我错过了一个额外的并发症,不幸的是答案对它没有帮助。我在这里注明,以防有人试图做类似的事情。

更复杂的是,变量的值是在发布期间设置的(我正在尝试访问 ARM 模板输出变量)。

我以为我可以访问 API 并获取“实时”变量值,但不幸的是,在发布完成之前,发布数据不存在(来自 API)。

所以当我在发布期间调用它时:

https://vsrm.dev.azure.com/{company}/{project}/_apis/release/releases/$($releaseId)?api-version=5.0

我收到“ID 为 38 的版本不存在”。

最佳答案

聚会迟到了,但我想分享一下。

Defined Variables doc 中所述,管道变量可以通过 环境变量。虽然 $(varname) 在任务开始之前得到处理,但 $env:varname 可以在运行中调用。所以你可以通过使用作弊:

Write-Host ('$env:'+"$(varname)" | Invoke-Expression)

任务将在任务开始前将 $(varname) 解析为它的值。所以脚本读作

Write-Host ("$env:TestVariable" | Invoke-Expression)

它会吐出与调用 $(TestVariable) 相同的结果。

尽管您确实需要遵守规则,例如“”和“。” -> “_”。

关于azure-devops - VSTS (Azure DevOps) 管道中的动态变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62000137/

相关文章:

azure - 如何从管道获取 Azure Active Directory 用户详细信息?

Azure powershell 任务 : Azure DevOps 中的 AzureRM 命令

Azure - 简单的 JSON 模板和参数文件,但仍然提示输入

azure - 如何查找特定存储库的 Azure 构建项

azure - 如何删除 JSON 字符串数组中的转义字符?

azure - 如何通过API在Azure Devops中添加团队成员? Groups API 也不起作用

Azure KeyVault 列出待处理的证书请求

azure - 为 Visual Studio Team Services 和 MTM 配置测试 Controller

Azure Pipeline 部署到应用服务失败 : "Resource doesn' t exist. 资源在部署之前应该存在”。但应用服务正在运行

azure - 降级 AzureRM PowerShell 模块