动态获取 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:
我已经为我的管道定义了一个如下所示的变量
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: