运行Azure AD cmdlet时出现PowerShell错误,疑为防火墙问题
问题解答
我遇到过相同的异常,最终确认是防火墙未正确放行所有AzureAD模块所需的端点导致的。
错误原因分析
Error reading JToken from JsonReader. Path '', line 0, position 0 这个错误本质是PowerShell模块尝试解析Azure AD Graph API的响应时,收到了空内容或非JSON格式数据。这种情况大多是因为请求被防火墙拦截,模块无法获取到正常的API返回结果。
排查与解决步骤
- 确认完整的端点放行列表:
AzureAD PowerShell模块(包括AzureADPreview)除了需要login.microsoftonline.com,还依赖Azure AD Graph API的端点graph.windows.net,同时建议放行*.microsoftonline.com相关子域名,所有端点均使用HTTPS(443端口)。 - 测试虚拟机连通性:
在虚拟机上执行以下命令验证端点是否可达:
如果命令返回连接失败、超时或非200状态码,说明防火墙确实拦截了请求。# 测试端口连通性 Test-NetConnection graph.windows.net -Port 443 Test-NetConnection login.microsoftonline.com -Port 443 # 测试API响应 Invoke-WebRequest -Uri "https://graph.windows.net/$script:Tenantid/applications?api-version=1.6" -Method Get - 检查防火墙深度过滤规则:
部分防火墙的深度包检测(DPI)或内容过滤规则可能会篡改或拦截API请求,导致返回空内容,需要确认这类规则是否影响了Azure相关端点的通信。
你已经重新安装了AzureADPreview模块,排除了模块损坏的可能性,因此优先排查防火墙的端点放行情况即可。
内容的提问来源于stack exchange,提问作者Samarth Rao
相关产品推荐
相关产品推荐

