解决自动化账户中PowerShell连接Exchange Online的UnauthorizedAccessException
解决方案
一、给系统分配托管身份添加Exchange读取权限
- 获取系统分配托管身份的Object ID:
进入Azure自动化账户 → 左侧菜单「身份」→「系统分配」标签页,复制「对象 ID」。 - 以全局管理员或Exchange管理员身份在本地机器连接Exchange Online:
Connect-ExchangeOnline - 将系统托管身份添加到Exchange只读角色组:
可选择加入现有只读角色组,或新建自定义角色组:- 加入现有组(如「View-Only Organization Management」):
Add-RoleGroupMember -Identity "View-Only Organization Management" -Member "替换为系统托管身份的Object ID" - 新建自定义只读角色组:
New-RoleGroup -Name "AutomationExchangeReadOnly" -Roles "View-Only Organization Configuration", "View-Only Recipients" -Members "替换为系统托管身份的Object ID" -Description "自动化账户系统身份的Exchange只读权限组"
- 加入现有组(如「View-Only Organization Management」):
二、确保连接命令正确使用手动托管身份
- 给手动托管身份分配Exchange权限:
重复上述步骤,将手动托管身份的Object ID添加到对应Exchange角色组(按需选择只读或权限更高的组)。 - 配置自动化账户对手动托管身份的访问权限:
进入手动托管身份的Azure资源页 → 左侧菜单「访问控制(IAM)」→ 添加角色分配,给自动化账户分配「托管身份操作员」角色。 - 修正连接命令参数:
确保-ManagedIdentityAccountID使用手动托管身份的Client ID或Object ID,命令示例:Connect-ExchangeOnline -ManagedIdentity -Organization "us.onmicrosoft.com" -ManagedIdentityAccountID "替换为手动托管身份的Client ID/Object ID" - 解决移除系统身份后的报错:
若移除系统分配身份后提示「找不到系统身份」,检查自动化账户内的其他运行书、模块或关联资源,确认没有依赖系统身份的配置项后再重新移除;或保留系统身份,通过明确指定-ManagedIdentityAccountID强制命令使用手动身份。
额外注意事项
- 确保自动化账户内安装的
ExchangeOnlineManagement模块版本与本地测试版本一致,优先使用最新稳定版(如V3.7.1)。 - 权限分配后需等待15-30分钟生效,再重新运行自动化任务。
内容的提问来源于stack exchange,提问作者Axtral
相关产品推荐
相关产品推荐

