PowerShell导出域安全组成员需分场景处理:中小组用Get-ADGroupMember直接导出;超5000成员须修改ADWS配置并重启服务;嵌套组加-Recursive参数展平;批量导出通过CSV驱动循环执行。

用 PowerShell 导出域内安全组成员清单,核心是用 Get-ADGroupMember 获取成员,再用 Export-Csv 生成可读报告。但默认有 5000 条限制,大组会截断,必须提前处理。
导出单个安全组成员(含基础信息)
适合中小规模组(成员 ≤5000),命令简洁直接:
- 基本导出:
Get-ADGroupMember -Identity "Access_FinanceShare" | Select-Object Name, SamAccountName, ObjectClass, DistinguishedName | Export-Csv C:\Reports\FinanceGroup_Members.csv -NoTypeInformation -Encoding UTF8 - 加时间戳和筛选用户类:
Get-ADGroupMember -Identity "Role_HR_Editor" | Where-Object {$_.ObjectClass -eq 'user'} | Select-Object Name, SamAccountName, UserPrincipalName, Enabled | Export-Csv C:\Reports\HR_Editor_Report_$(Get-Date -Format 'yyyyMMdd').csv -NoTypeInformation
导出大型组(超 5000 成员)需解除 ADWS 限制
域控默认限制返回条数,查 Domain Users 这类大组会报错或不全。必须修改 ADWS 配置:
- 在域控制器上编辑:
C:\Windows\ADWS\Microsoft.ActiveDirectory.WebServices.exe.config - 在
<appSettings>区域内添加一行:<add key="MaxGroupOrMemberEntries" value="200000" />(数值按实际最大成员数设) - 重启服务:
net stop ADWS && net start ADWS - 验证生效:
(Get-ADGroupMember -Identity "Domain Users").Count应返回准确总数
递归导出嵌套组全部成员(含子组展开)
当安全组包含其他组(如 Role_IT_Support → 嵌套 Access_ServerAdmin),用 -Recursive 参数一次性拉平:
Get-ADGroupMember -Identity "Role_IT_Support" -Recursive | Where-Object {$_.ObjectClass -eq 'user'} | Select-Object Name, SamAccountName, DistinguishedName | Export-Csv C:\Reports\IT_Support_Flat.csv -NoTypeInformation- 注意:-Recursive 会显著增加执行时间,建议仅对明确需要“扁平化权限视图”的场景使用
- 若需保留嵌套层级关系,改用
Get-ADGroup -Properties MemberOf或自定义遍历逻辑
批量导出多个组的成员到独立文件
适合定期巡检多个关键组,用 CSV 列表驱动:
- 准备
groups.csv,内容为:
GroupName<br>Access_FinanceShare<br>Role_Manager<br>Common_Printers
- 运行脚本:
Import-Csv C:\groups.csv | ForEach-Object {<br> $group = $_.GroupName<br> Get-ADGroupMember -Identity $group | Where-Object {$_.ObjectClass -eq 'user'} | Select-Object Name, SamAccountName, UserPrincipalName | Export-Csv "C:\Reports\${group}_Members.csv" -NoTypeInformation<br>}

















