Get-ADGroup 是什么
Get-ADGroup 查组对象本身:名称、范围(全局/通用/本地域)与类型(安全组还是通讯组);Get-ADGroupMember 查组里都有谁。做权限审计时最关键的是 -Recursive 参数——不带它只能看到第一层成员,嵌套组会被当成一个普通对象列出来,导致“这个共享到底谁能访问”的结论出错。
基本信息
| 适用平台 | Windows Server 域环境;需 ActiveDirectory 模块 |
|---|---|
| 查组语法 | Get-ADGroup -Filter / -Identity |
| 查成员 | Get-ADGroupMember -Identity 组 [-Recursive] |
| 枚举归属 | Get-ADPrincipalGroupMembership -Identity 用户 |
| 组范围 | Global、Universal、DomainLocal |
| 组类型 | 安全组可授权,通讯组仅用于邮件分发 |
典型使用场景
- 按命名前缀盘点资源组清单
- 审计“谁能访问这个共享”:递归展开最终成员
- 验证某个组是否被嵌套进其他组,权限是否被动扩大
- 识别误用通讯组做授权的情况(不会生效)
- 导出组成员用于权限复核留档
常用示例
常用示例
Get-ADGroup -Filter 'Name -like "DL-*"' | Select-Object Name, GroupScope, GroupCategory # 盘点资源组
Get-ADGroupMember -Identity 'DL-Sales-Read' -Recursive | Select-Object Name, SamAccountName, objectClass # 递归成员
Get-ADGroupMember -Identity 'DL-Sales-Read' | Where-Object objectClass -eq 'group' # 看有没有嵌套组
Get-ADPrincipalGroupMembership -Identity ops01 | Select-Object Name, GroupScope # 反查某人的组归属
Get-ADGroup -Identity 'DL-Sales-Read' -Properties Members | Select-Object -ExpandProperty Members # 直接看成员 DN
Get-ADGroupMember -Identity 'DL-Sales-Read' -Recursive | Export-Csv D:\ad\dl-sales.csv -NoTypeInformation -Encoding UTF8关键字段读法
| 字段 | 含义 | 注意点 |
|---|---|---|
| GroupScope | 组范围 | 影响跨域使用与嵌套规则 |
| GroupCategory | 安全组或通讯组 | 通讯组不能授权 |
| objectClass | 成员类型 | user/group/computer |
| -Recursive | 展开嵌套 | 审计必须加 |
| Members | 成员 DN 列表 | 大组要分页读取 |
不带 -Recursive 的结果里,嵌套进来的组只显示成一条组对象,很容易被忽略。做访问范围审计时把它当成默认开关更稳妥。
成员规模达到几千条的组,递归展开会比较慢,导出前先估算规模,必要时按需分页读取,避免把一次审计拖成几分钟的等待。
只想确认某个账号是否在组里,先取回成员列表再用 -contains 判断,比逐个组反查快得多;跨域授权时成员会以外部安全主体的形式出现,看到陌生标识先确认是不是信任域对象。
组不要设计得过大:按岗位或按资源拆成若干小组,成员关系清晰,权限复核时每条授权都能对应到具体用途,出问题也容易收敛范围。