动态获取 Azure 管道变量值

Get Azure pipeline variable value dynamically

我已经为我的管道定义了一个如下所示的变量

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)

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

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

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

ls env: