Get-ADUser 是什么
Get-ADUser 从活动目录中查询用户对象,支持三种姿势:按身份精确取出某个账号、用过滤语法按属性条件检索、用更底层的目录服务过滤表达式做复杂筛选。返回的是带属性的用户对象,可以直接投影、排序与导出。使用前提是装有目录服务管理模块并且当前账号有查询权限。它默认只返回一部分常用属性,想看部门、邮箱、上次登录时间等字段必须显式声明,这一点是新手最常踩的坑。
基本信息
| 适用平台 | Windows 域环境,需安装目录服务管理工具 |
|---|---|
| 语法 | Get-ADUser -Identity 账号 | -Filter "条件" | -LDAPFilter "(条件)" [-SearchBase 组织单位] [-Properties 属性] |
| 三种写法 | 按身份取单个、按过滤语法检索、按目录服务过滤表达式检索 |
| 默认属性 | 只含部分常用字段,需要其它字段要显式声明或全部取出 |
| 搜索范围 | 可用起始组织单位限定,减少检索量 |
| 分页控制 | 大目录检索应设置分页参数,避免一次拉取过多 |
典型使用场景
- 按账号或姓名查用户:确认账号是否存在、是否被禁用
- 批量导出用户清单,用于资产梳理与权限核对
- 查询上次登录时间,判断账号是否长期未使用
- 按部门或组织单位筛选,做分组统计与报表
- 排查登录问题:确认账号未锁定、密码未过期
- 与权限核查配合,找出长期未登录但仍启用的账号
常用示例
常用示例
# 按账号精确查询
Get-ADUser -Identity ops01
# 按条件检索并取需要的属性
Get-ADUser -Filter 'Name -like "zhang*"' -Properties Department, LastLogonDate |
Select-Object Name, SamAccountName, Department, Enabled, LastLogonDate
# 限定组织单位并限制返回条数
Get-ADUser -Filter * -SearchBase 'OU=Sales,DC=corp,DC=local' -ResultSetSize 100
# 用目录服务过滤表达式做复杂条件
Get-ADUser -LDAPFilter '(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))' -Properties LastLogonDate | Select-Object -First 20 Name, LastLogonDate
# 导出清单
Get-ADUser -Filter * -Properties Department | Select-Object Name, SamAccountName, Department, Enabled | Export-Csv D:\ad\users.csv -Encoding UTF8 -NoTypeInformation写法与参数
| 项 | 作用 | 注意点 |
|---|---|---|
| -Identity | 按账号精确取单个对象 | 支持专有名称与全局唯一标识等写法 |
| -Filter | 按属性条件检索 | 语法接近 PowerShell 但细节不同,字符串用单引号 |
| -LDAPFilter | 底层过滤表达式 | 表达复杂条件更灵活 |
| -SearchBase | 限定起始组织单位 | 大域中显著降低检索量 |
| -Properties | 声明要额外返回的属性 | 默认属性集不含部门与上次登录时间 |
| -ResultSetSize | 限制返回数量 | 调试查询时常用 |
无过滤条件的全量检索在大域上很慢,务必配合起始组织单位或分页参数。调试阶段先把范围限制到某个组织单位,确认语法正确后再放开。
上次登录时间由域控复制汇总,存在延迟,不能作为精确的实时依据;判断账号活跃度时结合多个域控的数据或使用登录事件更可靠。