Azure Automation中用托管身份连接MgGraph遇Newtonsoft.Json加载错误
解决Azure自动化中Connect-MgGraph的Newtonsoft.Json依赖错误
这个错误的核心原因是Azure自动化账户的沙箱环境里,MgGraph模块需要的Newtonsoft.Json 13.0.0.0程序集未被正确加载或安装,大概率是模块版本冲突或者依赖缺失导致的。以下是几个可行的解决方法:
方法1:安装匹配版本的Newtonsoft.Json模块
- 登录Azure门户,进入你的自动化账户
- 转到「模块」页面,搜索
Newtonsoft.Json - 如果没找到,点击「添加模块」,从PowerShell Gallery安装版本
13.0.3(该版本对应程序集版本13.0.0.0) - 如果已有旧版本,先删除再安装指定版本
方法2:同步MgGraph模块到兼容版本
- 在自动化账户的「模块」页面,检查
Microsoft.Graph模块的版本 - 把MgGraph更新到最新稳定版,确保它依赖的Newtonsoft.Json版本是13.x系列,避免版本不匹配
方法3:强制加载指定程序集
如果前两步没用,在代码开头添加加载逻辑,指定Newtonsoft.Json的路径:
# 加载Newtonsoft.Json 13.0.0.0程序集,路径根据实际安装版本调整 Add-Type -Path "C:\Modules\User\Newtonsoft.Json\13.0.3\lib\net472\Newtonsoft.Json.dll" # 原有连接代码 Connect-AzAccount -Identity $token = Get-AzAccessToken -ResourceTypeName MSGraph Connect-MgGraph -AccessToken $token.token
方法4:绕过Az模块直接获取令牌
如果模块依赖问题太棘手,可以直接调用Azure AD的令牌端点拿Graph令牌,完全不依赖Az模块:
$graphResource = "https://graph.microsoft.com/" $identityEndpoint = $env:IDENTITY_ENDPOINT $identityHeader = $env:IDENTITY_HEADER $requestHeaders = @{ "X-IDENTITY-HEADER" = $identityHeader } $tokenResponse = Invoke-RestMethod -Method Get -Uri "$identityEndpoint?resource=$graphResource&api-version=2019-08-01" -Headers $requestHeaders Connect-MgGraph -AccessToken $tokenResponse.access_token
这个方法直接利用Azure自动化提供的托管身份环境变量请求令牌,避开了模块依赖冲突。
内容的提问来源于stack exchange,提问作者RadioActiveLamb
相关产品推荐
相关产品推荐

