在PowerShell中使用Azure CLI的az rest启用VM扩展遇问题求助
解决Azure CLI az rest PUT命令请求体过长的问题
当然可以用@body.json的方式,这正是解决这类问题的最优解
命令行直接传超长请求体本来就容易触发长度限制和语法解析问题,把请求体放到外部JSON文件里就能一次性解决你遇到的所有问题,具体操作如下:
- 把请求体写到外部JSON文件
新建一个body.json文件,把原本要在命令里写的请求体内容放进去,注意格式要标准JSON,把那串20000字符的$defenderForEndpointOnboardingScript直接填到对应的字段里就行:
{ "location": "你的虚拟机所在区域", "properties": { "publisher": "Microsoft.Azure.AzureDefenderForServers", "type": "MDE.Windows", "typeHandlerVersion": "1.0", "settings": {}, "protectedSettings": { "onboardingScript": "这里粘贴你的超长脚本内容" } } }
- 用az rest调用这个JSON文件
执行命令时,用@body.json代替直接写请求体,同时一定要指定Content-Type: application/json(这能解决之前的Unsupported Media Type错误):
az rest --method put --uri "/subscriptions/{你的订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.Compute/virtualMachines/{虚拟机名}/extensions/MDE.Windows?api-version=2023-07-01" --body @body.json --headers Content-Type=application/json
几个要注意的点
- 检查JSON文件的格式,别出现引号不配对、多逗号这种低级错误,不然还是会报错。
- 把命令里的占位符(比如
{你的订阅ID})都换成自己的实际信息。 - 如果脚本里有双引号,记得在JSON里转成
\",不然会破坏JSON结构。
内容的提问来源于stack exchange,提问作者Bombbe
相关产品推荐
相关产品推荐

