首页 > 解决方案 > 动态获取 Azure 管道变量值

问题描述

我为我的管道定义了一个变量,看起来像这样

My Username-key

具有一些不重要的价值。My Username这是我帐户的名称,等于$(build.QueuedBy).

我想在我的任务中引用它,如下所示:

- task: PowerShell@2 #CmdLine@2 
  inputs:
    targetType: inline
    script: |
      $key= "$(build.QueuedBy)".replace(" ","") + '-KEY'
      echo $key | Invoke-Expression

我得到的是一个看起来像这样的错误:

Invoke-Expression : The term 'MyUsername-KEY' is not recognized as the name of a cmdlet, function, script
...

如何以与直接执行时相同的方式动态获取上例中的变量值

echo $(MyUsername-KEY)

标签: azure-pipelinesazure-pipelines-release-pipeline

解决方案


形式的变量表达式在脚本执行之前$(MyUsername-KEY)被评估。所以没有办法以这种形式动态地使用它们。但是您可以利用管道变量也作为环境变量公开的事实。您可以像这样动态获取环境变量的值:

(get-item "env:$key").value

如果你需要调试它,你可以得到所有环境变量的列表:

ls env:

推荐阅读