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

如何在Pipeline模板中遍历YAML复杂对象并访问嵌套属性

Azure Pipeline 遍历密钥库参数获取属性值问题

我有如下结构的Pipeline参数对象:

keyVaults:
      test-az-kv-01:
        - filter: clientID
        - second: test
      test-az-kv-02:
        - filter: clientID2
        - second: wonderful

我需要在Pipeline模板中遍历这个参数执行步骤,当前的遍历代码如下:

- ${{ each kv in parameters.keyVaults }}:
   - script: echo '${{ kv.key }} - ${{ kv.filter }}'
     displayName: Test outer

目前kv.key可以正常获取到密钥库名称,但无法访问每个密钥库对应的filter和second值,请问该如何实现?

问题原因

你的参数结构中,每个密钥库对应的是对象数组(比如test-az-kv-01对应包含两个对象的数组),而非单个对象。kv代表遍历到的键值对,其中kv.key是密钥库名称,kv.value才是这个数组,所以直接写kv.filter无法正确访问属性。

解决方法

方法1:调整参数结构(推荐)

把每个密钥库的属性从数组改为单个对象,访问逻辑更直观且不易出错:

keyVaults:
  test-az-kv-01:
    filter: clientID
    second: test
  test-az-kv-02:
    filter: clientID2
    second: wonderful

对应的遍历代码修改为:

- ${{ each kv in parameters.keyVaults }}:
   - script: echo '${{ kv.key }} - filter: ${{ kv.value.filter }}, second: ${{ kv.value.second }}'
     displayName: Process ${{ kv.key }}

方法2:不调整参数结构,直接访问数组元素

如果无法修改原参数结构,可以通过数组索引访问对应属性(注意依赖数组元素的顺序):

- ${{ each kv in parameters.keyVaults }}:
   - script: echo '${{ kv.key }} - filter: ${{ kv.value[0].filter }}, second: ${{ kv.value[1].second }}'
     displayName: Process ${{ kv.key }}

若属性数量不固定,也可以遍历数组内的每个属性项:

- ${{ each kv in parameters.keyVaults }}:
   - script: echo 'Processing key vault: ${{ kv.key }}'
     displayName: Start processing ${{ kv.key }}
   - ${{ each prop in kv.value }}:
      - script: echo '${{ prop.filter || prop.second }}'
        displayName: Output property for ${{ kv.key }}

内容的提问来源于stack exchange,提问作者Nerd in Training

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:55:20