创建ARM模板部署报错:解析值时遇到意外字符<
部署ARM模板时遇到JsonReaderException错误解决
问题背景
按照官方教程创建ARM模板,执行PowerShell部署命令时触发解析错误。
错误信息
New-AzResourceGroupDeployment : Unexpected character encountered while parsing value: <. Path '', line 0, position 0. At line:4 char:1 + New-AzResourceGroupDeployment ` + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [New-AzResourceGroupDeployment], JsonReaderException + FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.NewAzureResourceGroupDeploymentCmdlet
执行的部署命令
$templateFile="azuredeploy.json" $today=Get-Date -Format "MM-dd-yyyy" $deploymentName="blanktemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile
环境信息
- ARM模板文件位置:C盘根目录
- Az模块版本:8.1.0
Get-InstalledModule -Name Az Version Name Repository Description ------- ---- ---------- ----------- 8.1.0 Az PSGallery Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with Powe...
解决方案
1. 修正模板文件路径与内容
- 执行
Get-Location查看PowerShell当前工作目录,若不是C盘根目录,要么切换目录:Set-Location C:\,要么给模板文件指定完整路径:$templateFile="C:\azuredeploy.json"。 - 打开
azuredeploy.json文件:- 检查是否存在JSON语法错误(比如括号不闭合、引号不匹配),可通过VS Code的JSON验证功能(右下角显示JSON标识,错误会标红)排查。
- 确认文件开头无多余的
<字符(错误提示解析到该字符,大概率是文件内容非合法JSON,比如误存为HTML或编码异常)。
2. 验证并更新Az模块
执行以下命令更新到最新版Az模块,更新后重启PowerShell重试:
Update-Module -Name Az -Force
3. 确认Azure上下文与资源组
- 确保已登录正确Azure订阅,且目标资源组存在:
# 登录Azure Connect-AzAccount # 查看并切换到目标订阅 Get-AzSubscription Set-AzContext -Subscription "你的订阅ID/名称" # 确认资源组存在 Get-AzResourceGroup -Name "你的资源组名称" - 部署命令中显式指定资源组参数(若未指定会使用默认资源组,易引发问题):
New-AzResourceGroupDeployment ` -Name $deploymentName ` -ResourceGroupName "你的资源组名称" ` -TemplateFile $templateFile
内容的提问来源于stack exchange,提问作者Ale Silva
相关产品推荐
相关产品推荐

