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

如何用PowerShell赋值JSON内容及创建Azure Data Factory数据集报错求助

问题解决:PowerShell读取JSON并修复Azure CLI JSON解析错误

一、PowerShell将JSON文件内容赋值给变量的正确方式

要将JSON文件内容完整读取到变量中,必须使用-Raw参数确保获取的是单字符串格式的完整JSON,而非每行一个元素的字符串数组:

1. 读取为JSON字符串(直接用于CLI参数)

# 读取指定JSON文件的完整字符串内容
$jsonString = Get-Content "your-file-path.json" -Raw

2. 读取为PowerShell对象(需修改JSON内容时使用)

如果需要先修改JSON属性再使用,可将字符串转换为可操作的PowerShell对象:

# 读取并转换为PowerShell对象
$jsonObject = Get-Content "your-file-path.json" -Raw | ConvertFrom-Json

# 修改属性示例
$jsonObject.name = "NewDatasetName"

# 转换回字符串用于CLI
$updatedJsonString = $jsonObject | ConvertTo-Json -Depth 10

二、修复Azure Data Factory数据集创建脚本的JSON解析错误

你的脚本存在两个核心问题,导致JSON解析失败:

问题1:未使用-Raw读取JSON

Get-Content $_.FullName默认返回字符串数组,传递给Azure CLI时会被拆分为多个参数,导致CLI无法识别完整的JSON结构。

问题2:命令换行错误

az config set与后续Get-ChildItem命令未换行,会导致执行异常。

修复后的完整脚本

# 配置Azure CLI自动安装扩展
az config set extension.use_dynamic_install=yes_without_prompt

# 遍历指定目录下的所有JSON文件
Get-ChildItem "ADF_DATASETS/" -Filter *.json | Foreach-Object {
    # 读取完整的JSON字符串
    $content = Get-Content $_.FullName -Raw
    # 从JSON中提取数据集名称(避免硬编码)
    $datasetName = ($content | ConvertFrom-Json).name
    # 创建数据集
    az datafactory dataset create `
        --properties $content `
        --name $datasetName `
        --factory-name "ADFNAME" `
        --resource-group "RG_TEST"
}

错误信息翻译

错误详情:期望属性名用双引号包裹:第1行第2列(字符1)
请提供有效的JSON文件路径或JSON字符串。
提供的JSON字符串可能已被Shell解析。
错误:无法将字符串解析为JSON:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:35:18