可使用 powershell 的 get-aduser 命令结合 export-csv 快速生成域用户报表,需先确认 active directory 模块已安装并具备查询权限,再通过 -filter、-properties、-searchbase 等参数灵活筛选和导出指定属性与范围的用户数据。
可以使用 powershell 的 get-aduser 命令结合导出功能快速生成域用户信息报表,无需第三方工具,前提是已安装 active directory 模块且具备相应查询权限。
确认环境与权限
确保运行 PowerShell 的账户有读取 AD 用户对象的权限(如域用户组、Account Operators 或更高级别)。在目标服务器或管理机上执行以下命令验证模块是否可用:
- 以管理员身份打开 PowerShell
- 运行 Import-Module ActiveDirectory,无报错即表示模块已安装
- 若提示未找到模块,需先在 Windows Server 上安装“RSAT-AD-PowerShell”功能,或在 Windows 10/11 上通过“可选功能”添加“LDAP 工具”
基础导出命令示例
以下命令导出所有启用状态用户的常用属性,并保存为 CSV 文件:
Get-ADUser -Filter {Enabled -eq $true} -Properties DisplayName,EmailAddress,Department,Title,LastLogonDate,WhenCreated |
Select-Object SamAccountName,DisplayName,EmailAddress,Department,Title,LastLogonDate,WhenCreated |
Export-Csv -Path "C:\ADUsers_Report.csv" -NoTypeInformation -Encoding UTF8
- -Filter 用于限定范围,例如只查启用账号、特定 OU 或某部门
- -Properties 必须显式指定扩展属性(如 EmailAddress),否则默认不返回
- Export-Csv 推荐加 -Encoding UTF8 避免中文乱码,-NoTypeInformation 去掉首行类型声明
按组织单位(OU)导出特定部门
若只需导出某个部门(如“IT部”)所在 OU 下的用户,可使用 -SearchBase 参数精准定位:
$ouPath = "OU=IT,OU=Departments,DC=contoso,DC=com" Get-ADUser -SearchBase $ouPath -Filter * -Properties Manager,Phone,StreetAddress | Select-Object SamAccountName,DisplayName,Manager,Phone,StreetAddress | Export-Csv "C:\IT_Users.csv" -NoTypeInformation -Encoding UTF8
- OU 路径可通过 Get-ADOrganizationalUnit 查看或使用 ADAC 工具复制 DistinguishedName
- -Filter * 表示匹配该 OU 下所有用户对象(含禁用账号),如需排除禁用账号,改用 -Filter {Enabled -eq $true}
添加时间戳与筛选最近活动用户
导出时加入日期标记,并筛选近 90 天内登录过的用户,提升报表实用性:
$dateNow = Get-Date -Format "yyyyMMdd_HHmm"
$recentUsers = Get-ADUser -Filter {LastLogonDate -ge (Get-Date).AddDays(-90)} -Properties LastLogonDate |
Select-Object SamAccountName,DisplayName,LastLogonDate,@{Name="ReportTime";Expression={$dateNow}}
$recentUsers | Export-Csv "C:\ActiveUsers_$dateNow.csv" -NoTypeInformation -Encoding UTF8
- 使用计算属性 @{Name="ReportTime";Expression={...}} 可在结果中新增一列记录生成时间
- LastLogonDate 是近似值(由域控制器同步更新),如需精确登录时间,需查询各 DC 的 LastLogon 属性并比对,但通常 LastLogonDate 已满足日常审计需求











