azure - 如何解压或获取存储在 Azure DevOps Build Piplines 变量组

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

场景

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

    a. 部署UATApiPassword =“123456”

    b. DeployPRODApiPassword = "789654"

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

  3. 在运行时,DeploymentEnvironment 变量的值设置为 UATPROD

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

    # setting the value of the variable to UAT
    Write-Host "##vso[task.setvariable variable=DeploymentEnvironment]UAT" 
    
  5. 现在 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")

输出:

关于azure - 如何解压或获取存储在 Azure DevOps Build Piplines 变量组中的嵌套变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59669787/

相关文章:

extjs - 商店的监听器功能在网格更新时触发两次

powershell - 如何从 Mediainfo 中获取特定信息

maven - SonarQube 分析警告日志刷新操作(不结束)

assembly - 在实模式下使用 BIOS 格式化磁盘时出错

r - 使用 `colnames` 的数值使用 `dplyr` 的 `mutate_at` 或替代方

asp.net-mvc - 带有 Ckeditor 的 MVC2 应用程序“具有潜在危险的 Requ

macos - Docker Mac 替代 --net=host

.net - 如何检索 SQALE 评级和技术债务信息?

azure - 使用 Azure SQL 的 ASP.Net Core 2.1 Serilog SQ

selenium-webdriver - 在 Heroku 上使用 webdrivers selen