Get-ADPrincipalGroupMembership PowerShell cmdlet 可帮助检索指定用户、计算机或服务帐户直接和间接(嵌套组)所属的所有 AD 组。这对于合规、故障排除和安全审计至关重要,因为您可以快速识别配置错误并确保最小权限。本文展示了执行此任务的三种方法:
ADManager Plus 提供基于 GUI 的方法来获取 AD 用户组成员列表。
选择是否包含嵌套组
将报告导出为 CSV、PDF、XLS、HTML、XLSX 和 CSVDE 等不同格式
步骤 1: 以管理员身份打开 PowerShell ISE。
步骤 2: 如果未安装 AD 模块,请下载适合您操作系统的 RSAT 包并运行以下命令以激活它。
Import-Module ActiveDirectory
步骤 3: 运行以下命令以获取用户的 AD 组成员身份。此命令返回用户所属的所有组对象,包括 DistinguishedName、GroupCategory、GroupScope、Name、ObjectClass 和 SID 等属性。将 "username" 替换为用户的登录名。
Get-ADPrincipalGroupMembership -Identity "username"
AD Users and Computers (ADUC) 是查找组成员身份的常用方法。请注意,这仅列出用户直接所属的组。
示例 1:显示用户 "james" 的组名
该命令将输出传递并仅显示组名(而非完整组详细信息)。
Get-ADPrincipalGroupMembership -Identity "james" | Select-Object Name
示例 2:将组名导出为 CSV
将组名列表保存为 CSV 文件,用于报告或文档。
Get-ADPrincipalGroupMembership -Identity "james" | Select-Object Name | Export-Csv -Path "C:\James_Groups.csv" -NoTypeInformation
示例 3:列出带描述的组
检索用户所属的所有组列表,并显示其名称和描述以提供更好的上下文。
Get-ADPrincipalGroupMembership -Identity "james" | Get-ADGroup -Properties Description | Select-Object Name, Description
示例 4:获取 AD LDS 实例中用户的组成员身份
查询 AD Lightweight Directory Services (AD LDS) 实例以列出用户的组成员身份。
PS C:\> Get-ADPrincipalGroupMembership -Server localhost:60000 -Identity "CN=David,DC=AppNC" -Partition "DC=AppNC"
示例 5:获取 Administrator 的组成员身份
检索内置 Administrator 帐户所属的所有组。
PS C:\> Get-ADPrincipalGroupMembership -Identity Administrator
示例 6:获取资源域中帐户的组成员身份
显示指定资源域和分区中用户的组成员身份。
PS C:\> Get-ADPrincipalGroupMembership -Identity Administrator -ResourceContextServer Child.company.com -ResourceContextPartition "DC=company,DC=com"
示例 7:以表格形式查看组成员信息
以表格格式输出用户的组成员身份,包括名称和描述。
Get-ADPrincipalGroupMembership -Identity administrator | Get-ADGroup -Properties Description | Select Name, Description
以下是可与 Get-ADPrincipalGroupMembership cmdlet 一起使用的一些参数:
| 参数 | 描述 |
|---|---|
| -Identity | 指定要检查成员身份的用户、组、计算机或服务帐户。 |
| -AuthType | 指定身份验证方法(Negotiate 或 Basic)。 |
| -Credential | 使用备用凭据执行操作。 |
| -Partition | 在指定的 AD 分区中搜索组成员身份。 |
| -Server | 指定要连接的域控制器或 AD DS 实例。 |
| -ResourceContextPartition | 用于搜索跨域组成员资格。 |
| -ResourceContextServer | 用于搜索远程域中的组成员资格。 |
虽然功能强大,但仅依赖 PowerShell 和 ADUC 进行大量用户报告可能会遇到挑战:
ADManager Plus 弥合了强大 AD 报告与易用性之间的差距。以下是它为何成为许多 IT 团队更佳选择的原因:
1. 如何使用 powershell 获取用户所属的 AD 组列表?
Get-ADPrincipalGroupMembership PowerShell cmdlet 可用于列出用户所属的所有 AD 组。运行以下命令,将“username”替换为用户登录名:
Get-ADPrincipalGroupMembership -Identity "username"
或者,可以使用无脚本工具如 ManageEngine ADManager Plus 列出相同内容,并附带 多种导出格式、调度和直接在报告中执行管理操作等额外优势。
2. 如何检查用户是否是 AD 中某个组的成员?
您可以使用 Get-ADUser 并结合对 MemberOf 属性的筛选来检查用户是否属于特定组:
$user = "username"
(Get-ADUser -Identity $user -Properties MemberOf).MemberOf -contains "CN=GroupName,OU=Groups,DC=domain,DC=com"
也可以使用 Get-ADPrincipalGroupMembership cmdlet 来完成,这提供了更全面的方法:
$user = "username"
$groupName = "GroupName"
$groups = Get-ADPrincipalGroupMembership -Identity $user | Select-Object -ExpandProperty Name
$groups -contains $groupName
如果您偏好无脚本方法,请查看 ADManager Plus 与 PowerShell 在检查组成员资格方面的比较。