Azure CLI导入Synapse Notebook遇JSON解析错误,求--file参数正确用法
Azure CLI上传Synapse Notebook的--file参数错误修复方案
问题详情
用Azure CLI上传Synapse Notebook时,--file参数始终报错,无法解析JSON。
官方文档提示
--file支持两种传参方式:
- 用
@{path}语法从JSON文件读取属性 - 直接传入JSON字符串
官方建议:导入Notebook时,复杂参数推荐在文件路径前加“@”
原PowerShell代码
az login --service-principal --username ** --password ** --tenant ** az account set --subscription *** $filePath = @{ path = "test.ipynb" } az synapse notebook import --workspace-name synworkspace --name test --file $filePath --folder-path 'root/'
报错信息
Failed to parse string as JSON:
System.Collections.Hashtable
Error detail: Expecting value: line 1 column 1 (char 0)
试过传JSON字符串、直接传路径字符串都没用。
补充输出

正确解决方案
核心问题是PowerShell把Hashtable对象传给了Azure CLI,而CLI需要的是带@前缀的文件路径或JSON字符串。提供两种可行方法:
方法1:直接导入本地Notebook文件(最常用)
直接用@+文件路径让CLI读取本地.ipynb文件,不需要定义Hashtable:
az login --service-principal --username ** --password ** --tenant ** az account set --subscription *** # 相对路径(文件在当前工作目录) az synapse notebook import --workspace-name synworkspace --name test --file @test.ipynb --folder-path 'root/' # 绝对路径示例 az synapse notebook import --workspace-name synworkspace --name test --file @"C:\Users\yourname\test.ipynb" --folder-path 'root/'
方法2:通过JSON配置文件自定义Notebook属性
如果需要设置Notebook的元数据(比如语言、描述),先创建JSON配置文件(如notebook-settings.json):
{ "name": "test", "properties": { "nbformat": 4, "nbformat_minor": 2, "metadata": { "language_info": { "name": "python" } }, "cells": [] }, "folderPath": "root/" }
然后导入该JSON文件:
az synapse notebook import --workspace-name synworkspace --file @notebook-settings.json
关键注意点
- PowerShell中路径含空格时,必须用双引号包裹,比如
@"D:\Notebooks\My Test.ipynb" - 确保
.ipynb文件存在,且当前用户有读取权限 - 执行前用
az synapse workspace show --name synworkspace验证工作区连接正常
内容的提问来源于stack exchange,提问作者Salvatore Nedia
相关产品推荐
相关产品推荐

