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

迁移AzureAD到Az模块时找不到Get-AzureADUserMembership替代命令

Az模块获取指定用户所属组列表的实现方案

AzureAD 模块的 Get-AzureADUserMembership 没有同名的 Az 模块直接映射 cmdlet,可根据你使用的 Az 模块版本选择以下等效实现方式,返回结果与原 cmdlet 行为完全对齐:


方案1:使用原生Az cmdlet(推荐,Az.Resources 模块 ≥ 5.0.0 版本适用)

高版本 Az 模块的 Get-AzADUser 内置 -MemberOf 参数,可直接拉取指定用户的所属组、目录角色列表,无需额外调用接口:

# 已登录Az环境可跳过此步
Connect-AzAccount

# 将参数值替换为目标用户的UPN或对象ID
$targetUserId = "zhangsan@contoso.com"
$allMemberships = Get-AzADUser -ObjectId $targetUserId -MemberOf

如果仅需要筛选安全组,可直接在结果上过滤:

$securityGroups = $allMemberships | Where-Object SecurityEnabled -eq $true

方案2:调用内置Graph接口(兼容所有Az版本,适配自定义场景)

如果使用的 Az 版本较低、Get-AzADUser 不支持 -MemberOf 参数,可通过 Az 自带的 REST 调用能力直接请求 Microsoft Graph 接口获取数据,逻辑和原 AzureAD 模块的底层实现一致:

Connect-AzAccount
$targetUserId = "zhangsan@contoso.com"

# 拉取用户直接所属的组/角色,返回字段可按需调整$select后的内容
$allMemberships = Invoke-AzRestMethod -Method Get `
    -Path "/v1.0/users/$targetUserId/memberOf?`$select=id,displayName,securityEnabled,mailEnabled,groupTypes" `
    | Select-Object -ExpandProperty Content `
    | ConvertFrom-Json `
    | Select-Object -ExpandProperty value

注意:如果需要获取包含嵌套组的可传递成员资格(即用户通过组嵌套间接加入的所有组),将上述路径中的memberOf替换为transitiveMemberOf即可,和原Get-AzureADUserMembership加-All $true参数的返回结果一致。


避坑提示

不要通过遍历所有组、调用Get-AzADGroupMember反向匹配用户的方式实现需求,该方式在租户内组、用户数量较大时性能极差,会产生大量不必要的接口调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:24:25