You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Automation中用系统托管身份调用Get-CsPhoneNumberAssignment遇401未授权

解决Azure Automation托管身份运行Get-CsPhoneNumberAssignment的401未授权问题

关键排查与修复步骤

  • 升级Teams PowerShell模块版本:你当前使用的5.6.0版本对部分*-cs系列cmdlet的应用身份支持存在局限性,建议升级至6.0.0及以上版本——微软后续版本优化了Skype for Business后端相关cmdlet的应用身份验证逻辑。
  • 补全针对性管理员角色:
    • 除Teams管理员角色外,必须为托管身份分配Skype for Business Online管理员角色(注意是Online版本,非本地Skype角色)。*-cs系列cmdlet本质依赖Skype for Business的权限体系,仅Teams管理员角色无法覆盖其权限要求。
    • 避免使用全局读取者这类宽泛角色,针对性分配权限能减少权限冲突风险。
  • 确认Graph权限配置正确性:
    • 确保Organization.Read.All是应用权限而非委派权限,且已完成管理员同意操作。
    • 无需分配所有Graph权限,仅保留必要的应用权限即可,冗余权限可能触发不必要的权限校验问题。
  • 调整Runbook中的身份验证逻辑:
    • 使用托管身份获取令牌时,需指定Skype for Business的资源URI(国际版为https://api.skypeforbusiness.com,国内版或特定区域需对应调整),而非仅指向Graph资源。示例代码:
      $token = (Get-AzAccessToken -ResourceUrl "https://api.skypeforbusiness.com").Token
      Connect-MicrosoftTeams -AccessToken $token
      Get-CsPhoneNumberAssignment
      
  • 检查租户迁移状态:若租户是从Skype for Business迁移至Teams的,需确认已完成全租户升级,未完成升级的租户会限制应用身份访问*-cs类cmdlet。

额外验证动作

  • 先在本地环境用服务主体模拟托管身份的权限,运行Get-CsPhoneNumberAssignment测试,排除Azure Automation环境本身的问题。
  • 查看Azure活动日志中托管身份的权限请求记录,确认是否有明确被拒绝的权限项,再针对性补充。

内容的提问来源于stack exchange,提问作者DaVixon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:32:32