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

如何列出特定Security group中所有已启用的用户成员

获取指定安全组内所有已启用用户的可落地方案

本地Active Directory场景

执行前先确认本机已安装RSAT-AD-PowerShell模块,执行以下命令即可:

# 将<目标安全组名称>替换为你实际要查询的组名
Get-ADGroupMember -Identity "<目标安全组名称>" -Recursive |
  # 过滤掉组、计算机等非用户对象
  Where-Object ObjectClass -eq 'user' |
  # 拉取用户属性,筛选已启用账号
  ForEach-Object { Get-ADUser -Identity $_.DistinguishedName } |
  Where-Object Enabled -eq $true |
  # 按需选择要输出的字段
  Select-Object Name, SamAccountName, UserPrincipalName, Enabled
  • 不需要查询嵌套在子组内的用户时,删除-Recursive参数即可
  • 需要导出为表格文件的话,在整条命令末尾追加| Export-Csv -Path ".\启用用户列表.csv" -NoTypeInformation -Encoding UTF8,会在当前执行目录生成CSV文件
  • 常见错误原因:没有过滤非用户对象,会把组内的计算机账号、嵌套子组也统计到结果里,导致数据不准

Azure AD/微软365云环境场景

注意:旧版AzureAD/AzureADPreview模块已停止官方维护,存在大量兼容性问题,统一使用Microsoft Graph PowerShell模块操作即可

执行以下命令完成查询:

# 首次执行会弹出授权窗口,授予对应读取权限即可
Connect-MgGraph -Scopes "User.Read.All","GroupMember.Read.All"

# 将<目标安全组ObjectID>替换为Azure门户中查到的组ID
$targetGroupId = "<目标安全组ObjectID>"
# 要查询嵌套成员请将Get-MgGroupMember替换为Get-MgGroupTransitiveMember
Get-MgGroupMember -GroupId $targetGroupId -All |
  # 过滤非用户对象
  Where-Object { $_.AdditionalProperties.'@odata.type' -eq '#microsoft.graph.user' } |
  # 拉取用户属性筛选已启用账号
  ForEach-Object { Get-MgUser -UserId $_.Id } |
  Where-Object AccountEnabled -eq $true |
  Select-Object DisplayName, Mail, UserPrincipalName, AccountEnabled
  • 常见错误原因:直接从组成员返回结果里判断账号启用状态,组成员接口默认不返回AccountEnabled属性,必须单独拉取用户详情才能拿到准确的启用状态,会导致筛选结果错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:57:22