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

PowerShell调用Databricks CLI传递带变量JSON参数报错如何解决?

PowerShell环境下Databricks CLI传JSON参数报错解决方法

报错原因

你遇到的JSONDecodeError报错是因为传入--notebook-params的内容不符合标准JSON格式:要么是引号转义规则和PowerShell语法冲突导致最终输出的JSON引号混乱,要么是单引号包裹JSON导致内部变量没有被正确展开。

推荐解决方法

优先选择先构造PowerShell对象再转JSON的方案,完全不需要手动处理引号转义,兼容性最高:

# 第一步:构造参数字典并转成压缩格式的JSON
$notebookParams = @{
    parameterName = $parameterValue
} | ConvertTo-Json -Compress

# 第二步:调用Databricks CLI
databricks jobs run-now --job-id $job_id --notebook-params $notebookParams

直接拼接字符串的正确写法

如果你需要直接拼接JSON字符串,需严格遵循PowerShell双引号转义规则,同时避免外部程序二次转义问题:

databricks jobs run-now --job-id $job_id --notebook-params "{`"parameterName`":`"$parameterValue`"}"

如果上述写法仍报错,可以在参数前加--%停止PowerShell的参数解析(此时变量需提前转为环境变量):

$env:parameterValue = $parameterValue
databricks jobs run-now --job-id $job_id --notebook-params --% "{\"parameterName\":\"%parameterValue%\"}"

原有写法错误说明

  • 第一种双引号嵌套双引号的写法:PowerShell中仅单引号包裹的字符串支持用两个双引号转义双引号,外层为双引号时该规则不生效,最终输出的JSON引号格式混乱。
  • 第二种反引号转义的写法:如果参数值包含特殊字符,或PowerShell调用外部CLI时自动对引号做了二次转义,就会导致JSON格式损坏。
  • 第三种单引号包裹JSON的写法:PowerShell单引号包裹的字符串不会展开内部变量,$parameterValue会被直接作为字符串传入而非你的变量值,不符合调用要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:45:03