命令是干什么的
Search-ADAccount 把常见账户状态检索封装成开关:锁定、密码永不过期、已停用、长期未登录、密码将过期。相比自己拼 Get-ADUser -Filter 的 LDAP 条件,它更省事且不易写错时间格式,是账户审计与清理的第一入口;返回对象可直接管道给 Unlock-ADAccount、Disable-ADAccount 等动作命令。
与 Get-ADUser 的关系
Search-ADAccount 底层同样走 LDAP 查询,只是把常用条件封装成开关并替你处理了时间格式;需要更复杂的条件(按部门、OU 或属性组合筛选)时应退回 Get-ADUser,用 -Filter 与 -SearchBase 组合出精确范围。
不限定 -SearchBase 时查询范围是整个域,大域上耗时明显;把范围收窄到具体 OU 能显著提速,也避免把无关部门的账户卷进清理清单。
基本信息
| 适用平台 | Windows Server 2008 R2 及以后 + RSAT 的 ActiveDirectory 模块,需连域 |
|---|---|
| 权限要求 | 查询域内用户可读;执行停用、解锁等写操作需相应委派或域管权限 |
| 常用开关 | -LockedOut、-PasswordNeverExpires、-AccountDisabled、-AccountInactive -TimeSpan、-PasswordExpiring |
| 范围限定 | -UsersOnly / -ComputersOnly / -ServiceAccountsOnly |
典型使用场景
- 周期审计:列出长期未登录账户,交业务确认后清理
- 事件响应:爆破之后批量查看当前仍处锁定状态的账户
- 合规整改:找出所有密码永不过期的账号并通报
- 资产治理:清点已停用但仍存在的计算机对象
- 主动运维:提前通知密码即将到期的用户改密
常用示例
常用示例
Search-ADAccount -LockedOut | Select-Object Name, SamAccountName, LockedOut
Search-ADAccount -PasswordNeverExpires -UsersOnly | Select-Object Name, SamAccountName
Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 -UsersOnly | Select-Object Name, LastLogonDate
Search-ADAccount -AccountDisabled -ComputersOnly | Select-Object Name, LastLogonDate
Search-ADAccount -PasswordExpiring -TimeSpan 7.00:00:00 | Select-Object Name, PasswordExpires开关读法
| 开关 | 筛选条件 | 典型用途 |
|---|---|---|
| -LockedOut | 当前被锁定的账户 | 爆破或连续输错密码后的快速清点 |
| -PasswordNeverExpires | 密码设为永不过期 | 合规整改与高风险清单 |
| -AccountDisabled | 已停用的账户 | 清理残留对象前先确认范围 |
| -AccountInactive -TimeSpan | 指定时长内未登录 | 僵尸账户识别,格式 d.hh:mm:ss |
| -PasswordExpiring | 密码即将到期 | 提前通知用户改密 |
| -TimeSpan 格式 | 天.时:分:秒 | 要筛 90 天必须写成 90.00:00:00 |
清理动作前先导出清单交业务确认;脚本中优先用 -WhatIf 或只导出不修改,避免误停仍在使用的账号。
-AccountInactive 依赖各域控上的 lastLogonTimestamp 属性,该属性有数天到十几天的复制延迟,重要结论宜稍后复核或换用其他口径。