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

迁移至Microsoft Graph PowerShell时Get-MgUserMemberOf获取组成员报错

问题解决建议:Get-MgUserMemberOf 资源不存在错误

错误根源

你调用Get-MgUserMemberOf时传入的是完整的用户对象,而非用户的Id属性值。Get-MgUser返回的是MicrosoftGraphUser类型对象,直接将该对象传给-UserId参数会导致Graph无法识别目标资源,从而抛出错误。

修复步骤

  1. 提取用户ID作为参数传递
    在循环中,将Get-MgUserMemberOf -UserId $user改为Get-MgUserMemberOf -UserId $user.Id,示例代码片段:

    # 获取未授权用户(过滤无许可证的用户)
    $unlicensedUsers = Get-MgUser -Filter "assignedLicenses/`$count eq 0" -ConsistencyLevel eventual -CountVariable unlicensedCount -All
    
    # 循环处理每个用户
    foreach ($user in $unlicensedUsers) {
        # 正确传入用户ID获取组成员身份
        $userGroups = Get-MgUserMemberOf -UserId $user.Id
        # 后续根据组判断并分配许可证的逻辑...
    }
    
  2. 额外优化与验证建议

    • 批量处理提升效率:先通过Select-Object Id提取所有用户ID,再批量调用API减少请求次数,避免频繁循环调用带来的性能问题。
    • 确认权限生效:确保配置的User.ReadWrite.All、Organization.Read.All、Directory.Read.All应用权限已获得管理员同意,且脚本使用应用权限认证(而非委派权限),自动化场景推荐用-ClientSecret或-CertificateThumbprint方式连接Graph。
    • 校验用户对象:在循环中增加判断,确保$user.Id不为空,避免传入无效值导致请求失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:45:44