如何解压或获取存储在 Azure DevOps Build Piplines 变量组中的嵌套变量的值?

2024-04-21

是否可以在 Powershell 脚本中的变量内使用 Azure Pipelines 变量?

SCENARIO

  1. Azure Pipelines 变量组中设置了两个变量 -DeploymentCredentials

    a. DeployUATApiPassword = "123456"

    b. DeployPRODApiPassword = "789654"

  2. 另一个变量在管道的变量部分设置为DeploymentEnvironment

  3. 在运行时,该值DeploymentEnvironment变量设置为UAT or PROD

  4. 根据环境,我想获取存储为变量的密码,在变量组中定义。在运行时,它应该像...

    # setting the value of the variable to UAT
    Write-Host "##vso[task.setvariable variable=DeploymentEnvironment]UAT" 
    
  5. Now DevelopmentEnvironment变量有值UAT,在另一个步骤中,我想获取UAT部署环境的密码,该密码只有在运行时才知道。

    # I want to get the Password 
    # The following works! but not useful for me, UAT is hard-coded!!
    $deployPwd = $(DeployUATApiPassword) # works! but not useful for me, UAT is hard-coded!!
    
    # I want to get the Password
    # the following doesn't work, I only know the environment at runtime
    # Replaces the inner variable to `DeployUATApiPassword`
    # Raises an error, DeployUATApiPassword : The term 'DeployUATApiPassword' is not recognized as the name of a cmdlet...
    $deployPwd = $(Deploy$(DeploymentEnvironment)ApiPassword) 
    
    # All the following didn't work either, but no error...
    Write-Host $('Deploy$(DeploymentEnvironment)ApiPassword')     # Output: DeployUATApiPassword
    Write-Host $($("Deploy$(DeploymentEnvironment)ApiPassword"))  # Output: DeployUATApiPassword
    Write-Host { 'Deploy$(DeploymentEnvironment)ApiPassword' }    # Output: 'DeployUATApiPassword'
    Write-Host { Deploy$(DeploymentEnvironment)ApiPassword }      # Output: DeployUATApiPassword
    Write-Host { $(Deploy$(DeploymentEnvironment)ApiPassword) }   # Output: $(DeployUATApiPassword) 
    

同样,我尝试通过多种方式获取密码,但没有任何效果。 例如,其中一种方法是创建另一个变量DeployApiPassword我确实将变量的值设置为Deploy$(DeploymentEnvironment)ApiPassword。这也没有运气......

$deployPwd = $(DeployApiPassword) # Output: DeployUATApiPassword

期望的输出

我想从变量组中设置的变量之一获取密码。密码变量名称包含部署环境。部署环境仅在运行时设置。

    # I know something is wrong with the following, but that's how I want to run.
    $deployPwd = $(Deploy$(DeploymentEnvironment)ApiPassword) 

    Write-Host $deployPwd # output: *** (of course, the pwd is hidden, but at least it fetches)

Azure Pipelines 变量组中设置的变量将用作 PowerShell 任务中的环境变量。因此,基本上,您需要获取以下值:

$environment = $env:DeploymentEnvironment
$deployPwd = $env:DeployUATApiPassword

同时,如果您想根据环境动态获取密码,可以尝试以下操作:

$environment= $env:DeploymentEnvironment

Write-Host "Deployment Environment is " $environment

$realName = $("Deploy${environment}ApiPassword")
$pwd = [Environment]::GetEnvironmentVariable($realName)

#I used UAT password, check it here
Write-Host $pwd.Equals("123456")

Output:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解压或获取存储在 Azure DevOps Build Piplines 变量组中的嵌套变量的值? 的相关文章

随机推荐

  • php的password_hash和password_verify看了一遍还是不行

    UPDATE所以这是一个令人尴尬的愚蠢承认 但问题是我存储在数据库中的哈希值是 密码 的哈希值包括引号 我写的查询没有问题 问题出在椅子和键盘之间 所以这是一个经常被问到的问题 我查遍了 stackoverflow 和 google 试图找
  • Delphi - 检测我的应用程序是否打开了模式对话框

    我有一个 Delphi 2006 应用程序 当检测到错误情况时 它会弹出模式警报对话框 由于对错误条件的检查是在空闲处理程序中完成的 因此如果恰好显示了另一个模式对话框 则该对话框可能会在另一个模式对话框的顶部弹出 这可能会导致用户感到困惑
  • 从 PostgreSQL 数据库检索评论

    我正在 Postgres 数据库上运行一个项目 需要检索数据库中列的注释以用作表标题等 我已经看到有几个内置函数 pg 描述 http www postgresql org docs 9 1 static catalog pg descri
  • ruby/rails:扩展或包含其他模块

    我将模块分开 以便它们更易于阅读和搜索 lib features running rb walking rb features rb 他们有 lib features running rb module Features Running e
  • 奇怪的Java时区日期转换问题

    我想转换ms since 1970 timestamp到带有时区的日期 德国 这里有两种有效的代码变体 至少 我记得使用过它并且它有效 import java text SimpleDateFormat import java util C
  • jQuery异步函数调用,无AJAX请求

    这看起来很愚蠢 但我找不到如何使用 jQuery 进行不涉及某些服务器端请求的异步函数调用 我有一个缓慢的函数 它会遍历大量 DOM 元素 并且我希望浏览器在该函数运行时不会冻结 我想在调用慢速函数之前显示一个小指示器 然后当慢速函数返回时
  • excel+powerpoint 如何决定重新缩放粘贴为图像的范围?

    我注意到 当您复制 Excel 中的范围 复制为图片 如屏幕所示 并将其粘贴到 PowerPoint 中时 生成的图像不会 100 缩放为原始图像 右键单击图像 转到格式设置并转到尺寸以查看比例信息 此外 这种缩放比例在不同的计算机上有所不
  • 如何使用 C API 创建 datetime64 对象的 Numpy 数组?

    我需要从 C C 代码创建 numpy datetime64 对象的数组 正如你所看到的NPY LONGLONG and NPY VOID我做到了 我需要做同样的事情NPY DATETIME type PyObject arr1 PyArr
  • 在 Javascript/jQuery 中从数组中删除多个元素

    我有两个数组 第一个数组包含一些值 而第二个数组包含应从第一个数组中删除的值的索引 例如 var valuesArr new Array v1 v2 v3 v4 v5 var removeValFromIndex new Array 0 2
  • 从头开始一个 TDD 项目

    我读了很多关于 TDD 的问答和关于 SO 的单元测试 但我没有找到任何答案 我从哪里开始 我和团队已经完成了几个项目 在这些项目中 我们对代码采用了单元测试 但先编码 然后单元测试 在开发过程的某个阶段 先编写测试然后编写代码变得很自然
  • Manatee.Trello 移动卡片

    我正在编写一个小型应用程序来管理 Trello Boards 的几个方面 例如对列表中的卡片进行排序 根据截止日期和 或标签移动 复制卡片 定期归档列表以及根据标签生成报告 因此 我一直在 Manatee Trello 库周围构建一个外观
  • Picasso 加载 AsyncTask 内生成的图像

    所以我正在尝试使用毕加索图书馆 http square github io picasso 用于图像下载和缓存 为了让 contactUri 传递给Picasso我需要向联系人查询Content Provider 由于我不想阻止主 UI 线
  • ETL 工具...它们到底做什么?请通俗地说[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我最近接触了一些 ETL 工具 例如 Talend 和 Apatar 我想知道这些工具通俗地说的用途 主要目标到底是什么 谁主要使用它
  • UICollectionView 断言失败

    我在执行时遇到此错误insertItemsAtIndexPaths in UICollectionView 断言失败 UICollectionViewData indexPathForItemAtGlobalIndex SourceCach
  • java.time中,月份相加的结果是如何计算的?

    在 JSR 310 中java timeJDK 8中的API 日期加月份结果的计算规则是什么 特别是 当您向 1 月 31 日这样的日期添加 1 个月时会发生什么 LocalDate initial LocalDate of 2012 1
  • UglifyJS 和 webpack v5

    我们的 React 代码一直使用 UglifyJS 和 webpack v4 但随后更新为 webpack v5 看来 UglifyJS 不适用于 webpack v5 还有其他选择吗 我们需要一些可以与 babel loader 配合使用
  • Cygwin git 将错误的路径传递给我的编辑器以获取提交消息

    我在 cygwin 下使用 git 但它没有将提交消息的正确路径传递给我的编辑器 我正在位于我的驱动器上的测试存储库中工作 d X git myproject 在 cygwin 终端中 该路径显示为 cygdrive d X git myp
  • 在 KQL azure 显示器中显示今天、昨天、一周的最佳方式

    我试图显示今天的计数 9 滚动 24 小时 与昨天 再次滚动 对比每周平均值 虽然我已经有了可以工作的代码 但我也遇到了错误 错误是 查询成功 但有警告 处理查询时出现一些错误 部分查询失败 未指定的错误 消息 分片 5eeb9282 08
  • 未找到入口点

    当我尝试运行链接到 DLL 的应用程序 我有一段时间没有更改代码 因为它工作正常 时 遇到了一个奇怪的错误 这个 DLL 曾经可以工作 但我一直在更改 DLL 的代码并使其编译正常 不幸的是 当尝试运行该应用程序时 GameTest001
  • 如何解压或获取存储在 Azure DevOps Build Piplines 变量组中的嵌套变量的值?

    是否可以在 Powershell 脚本中的变量内使用 Azure Pipelines 变量 SCENARIO Azure Pipelines 变量组中设置了两个变量 DeploymentCredentials a DeployUATApiP