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

Azure Pipelines convertToJson转义含变量模板参数反斜杠异常

Azure DevOps YAML模板序列化含反斜杠变量的转义问题

我在Azure DevOps流水线里,把带反斜杠的变量作为YAML对象模板参数传递,用convertToJson表达式函数序列化时碰到了转义异常。简化后的流水线和模板代码如下:

流水线代码

pool:
  vmImage: windows-latest
steps:
  - template: template.yml
    parameters:
      struct:
        file1: $(Build.SourcesDirectory)\file1.txt
        file2: c:\source\file2.txt

模板代码

parameters:
- name: struct
  type: object
steps:
- task: PowerShell@2
  inputs:
    targetType: inline
    script: |
      $json = '${{ convertToJson(parameters.struct) }}'
      Write-Host "Serialized JSON: '$json'"
      # 从此处开始失败
      $struct = $json | ConvertFrom-Json
      Write-Host "file1: $($struct.file1)"

问题现象

执行后输出显示,file1的反斜杠没有被正确转义成双反斜杠,导致PowerShell的ConvertFrom-Json解析失败。我推测是convertToJson先完成了JSON转义,之后才替换流水线变量$(Build.SourcesDirectory),使得变量里的单反斜杠直接出现在JSON字符串中,破坏了JSON格式。

已尝试的解决方法

  • 使用运行时评估语法$[ variables[...] ]
  • 用额外变量包装参数
  • 将参数转换为PowerShell环境变量
  • 尝试用${{format(...)}}提前评估变量,但Build.SourcesDirectory是运行时变量,编译阶段无法获取值

我知道可以通过PowerShell临时修复这个问题,但想确认这种转义错误是否属于预期行为,以及有没有更优的YAML层面解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:14:56