如何在自定义PowerShell脚本中使用Azure DevOps库变量组的值
在Azure DevOps自定义PowerShell脚本中使用库变量组变量
步骤1:确认变量组内的变量
先确保poctest变量组中已创建好你需要的变量(比如Name1、Name2,名称可自定义)。
步骤2:修改YAML任务传递变量组变量
将PowerShell任务参数里的参数引用替换为变量组变量的引用,Azure DevOps支持两种引用方式:
方式1:宏语法(运行时解析,最常用)
用$(变量名)的格式引用,适合绝大多数场景:
parameters: - name: Name1 displayName: 'Name1' type: string values: - test01 - name: Names2 displayName: 'Name2' type: string values: - rgp01 - rgp02 - rgp03 variables: - group: poctest - task: PowerShell@2 inputs: targetType: 'filePath' filePath: 'pwsh/connection.ps1' arguments: | -Name1 $(Name1) -Name2 $(Name2)
方式2:模板表达式语法(编译阶段解析)
如果需要在模板编译时就确定变量值(比如用于条件判断),可以用${{ variables.变量名 }}:
- task: PowerShell@2 inputs: targetType: 'filePath' filePath: 'pwsh/connection.ps1' arguments: | -Name1 ${{ variables.Name1 }} -Name2 ${{ variables.Name2 }}
步骤3:在PowerShell脚本中接收变量
确保connection.ps1脚本已定义对应参数来接收传递的值,示例如下:
param( [string]$Name1, [string]$Name2 ) # 直接使用变量 Write-Host "获取到的Name1值:$Name1" Write-Host "获取到的Name2值:$Name2"
注意事项
- 若变量组内是秘密变量(如密钥、密码),Azure DevOps会自动隐藏其值,引用方式和普通变量一致,日志中会显示为
***。 - 若存在变量命名冲突,可给变量组添加前缀区分:
引用时使用variables: - group: poctest name: 'poctest.'$(poctest.Name1)即可避免冲突。
内容的提问来源于stack exchange,提问作者pks
相关产品推荐
相关产品推荐

