You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline中如何提取TEST_开头变量并按原格式存储为新变量

实现方案

完整修改后的流水线定义

resources:
  repositories:
  - repository: templates
    type: git
    name: pipeline_templates
    ref: refs/heads/master

trigger:
- none
variables:
  - template: templates/var1.yml@templates
pool:
  name: PoolA
steps:
# 第一步:过滤TEST_开头变量,生成JSON并存储为输出变量
- pwsh: |
    # 把全量变量转为PowerShell对象
    $allVars = '${{ convertToJson(variables) }}' | ConvertFrom-Json
    # 初始化空对象存储筛选后的变量
    $testVars = [PSCustomObject]@{}
    # 遍历所有属性筛选TEST_开头的键
    $allVars.PSObject.Properties | Where-Object Name -like 'TEST_*' | ForEach-Object {
        $testVars | Add-Member -NotePropertyName $_.Name -NotePropertyValue $_.Value
    }
    # 转成JSON字符串
    $filteredJson = $testVars | ConvertTo-Json -Compress
    # 输出到日志便于调试
    Write-Host "筛选后的TEST变量JSON: $filteredJson"
    # 存储为流水线输出变量,供后续步骤调用
    Write-Host "##vso[task.setvariable variable=FilteredTestVars;isOutput=true]$filteredJson"
  name: FilterVarsStep # 必须指定步骤名,后续步骤引用变量需要用到

# 示例:后续步骤使用筛选后的变量
- pwsh: |
    # 读取上一步生成的JSON变量
    $testVars = '$(FilterVarsStep.FilteredTestVars)' | ConvertFrom-Json
    # 方法1:直接获取指定变量值
    Write-Host "数据库地址:$($testVars.TEST_DB_HOSTNAME)"
    Write-Host "ActiveMQ端口:$($testVars.TEST_ACTIVEMQPORT)"
    # 方法2:遍历所有TEST_开头的变量
    Write-Host "=== 遍历所有TEST变量 ==="
    $testVars.PSObject.Properties | ForEach-Object {
        Write-Host "变量名:$($_.Name),变量值:$($_.Value)"
    }

功能说明

  • 生成的FilteredTestVars变量为标准JSON格式,结构完全符合要求,内容仅包含TEST_开头的键值对
  • 同一流水线后续所有任务都可以通过$(FilterVarsStep.FilteredTestVars)引用该变量
  • 既可以直接提取单个TEST_变量的值,也可以遍历所有TEST_变量批量处理

内容的提问来源于stack exchange,提问作者JCDani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:15:05