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

az keyvault secret set处理特殊字符开头密钥值报错求助

解决方法

1. 先修正YAML参数里的密钥值定义

YAML语法里#是注释符号,你直接写secretValue: #testvalue时,#testvalue会被当成注释,导致实际传递的密钥值为空。必须用单引号把值包裹起来,让YAML识别为完整字符串:

parameters:
- name: info
  displayName: Information
  type: object
  default:
  - subName: Sub1
    kvs:
    - kvName: kv1
      secretName: test-secret
      secretValue: '#testvalue'  # 给值加上单引号

2. 在bash脚本里正确处理密钥值

bash中#同样是注释标记,即使YAML传对了值,直接展开会被bash截断成注释。要给--value的参数套上单引号,确保bash完整读取整个值:

inlineScript: |
  # Case statements for schemas needed to be stored, encrypted or both
  case ${{ parameters.infoCategory }} in  # 原脚本里的参数名写错了,要对应定义的infoCategory
    Cat1)
      # Storing schema password
      az keyvault secret set --name ${{keyvault.secretName}} --vault-name ${{keyvault.kvName}} --value '${{keyvault.secretValue}}' --content-type 'content' --expires ${{parameters.expiryDate}}
      echo "${{parameters.expiryDate}}"  # 原脚本里的$expiryDate未定义,要直接用参数变量
      ;;
  esac

备选方案:通过bash变量传递值

如果上面的方式还是有问题,可以先把密钥值赋值给bash变量,再传递给az命令,避免直接解析的问题:

inlineScript: |
  # Case statements for schemas needed to be stored, encrypted or both
  case ${{ parameters.infoCategory }} in
    Cat1)
      # Storing schema password
      SECRET_VAL='${{keyvault.secretValue}}'
      az keyvault secret set --name ${{keyvault.secretName}} --vault-name ${{keyvault.kvName}} --value "$SECRET_VAL" --content-type 'content' --expires ${{parameters.expiryDate}}
      echo "${{parameters.expiryDate}}"
      ;;
  esac

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:43:12