命令是干什么的
Get-ADUser 是查询域用户的主力 cmdlet:-Filter 使用 PowerShell 风格表达式,-LDAPFilter 使用 LDAP 语法,分别适合不同复杂度的条件。它只返回默认属性集,需要额外字段(如 LastLogonDate、EmailAddress)时必须用 -Properties 显式点出,否则结果里是空值。
分页与静默截断
AD 查询默认最多返回 1000 条,超出会被静默截断——结果看着正常,条数却不对。通过 -ResultPageSize 调整单页大小、把 -ResultSetSize 设为 $null 取消总量上限,才能拿到完整集合,这是导出全量清单前必须检查的一项。
基本信息
| 适用平台 | Windows Server 2008 R2 及以后 + RSAT 的 ActiveDirectory 模块,需连域 |
|---|---|
| 权限要求 | 查询通常域用户即可,读取受保护属性需要更高权限 |
| 语法 | Get-ADUser -Filter '表达式' [-Properties 属性] [-SearchBase OU 路径] |
| 两种过滤 | -Filter 用 PowerShell 风格;-LDAPFilter 用 LDAP 匹配规则 |
典型使用场景
- 按启用状态、部门或名字前缀批量筛选账号
- 导出全量用户清单,用于审计与资产台账
- 按邮箱后缀或 UPN 后缀定位特定组织的账号
- 配合 -SearchBase 把范围限定到某个 OU,缩短查询耗时
- 为批量修改属性(如部门、办公室)预先取出目标集合
常用示例
常用示例
# 找出所有被禁用的用户
Get-ADUser -Filter 'Enabled -eq $false' -ResultPageSize 1000 | Select-Object Name, SamAccountName, DistinguishedName
# 邮箱以 @corp 结尾,属性要先 -Properties 点出来
Get-ADUser -Filter 'EmailAddress -like "*@corp.local"' -Properties EmailAddress | Select-Object Name, EmailAddress
# 全量导出:注意分页与结果集上限
Get-ADUser -Filter * -Properties * -ResultPageSize 1000 -ResultSetSize $null | Select-Object SamAccountName, DisplayName, Department, Enabled, LastLogonDate | Export-Csv ad_users.csv -NoTypeInformation -Encoding UTF8参数读法
| 参数 | 作用 | 注意 |
|---|---|---|
| -Filter | PowerShell 风格过滤表达式 | 字符串要加引号,写错不报错只返回空 |
| -LDAPFilter | LDAP 匹配规则 | 复杂条件用它更灵活 |
| -Properties | 附加返回属性 | 未点出的属性取不到值 |
| -SearchBase | 限定查询的 OU | 大域上显著提速 |
| -ResultPageSize | 单页大小 | 默认 1000,常需显式设置 |
| -ResultSetSize | 结果总量上限 | 设为 $null 可取消限制 |
过滤条件写错不会报错,只会返回空集;用已知存在的账号反向验证条件是否正确,能避免把空结果当成结论。
默认结果集上限 1000 时会静默截断,导出或统计前务必加上 -ResultPageSize 与 -ResultSetSize $null。导出 CSV 时显式指定 UTF8 编码,可避免中文姓名在 Excel 中显示乱码。