应结合PwdLastSet超120天、LastLogonTimestamp超180天、Enabled为true及OU/描述标签交叉验证,按“发现→通知→冻结→清理”四步法操作,全程启用AD回收站并记录日志。
要找出 ad 域中长期未登录、可能已失效的计算机账户,关键是结合 lastlogontimestamp(或 lastlogondate)与账户启用状态,并排除特殊系统账户(如域控制器)。powershell 提供了高效、可定制的方式完成这项任务。
确认查询范围与权限要求
需以具有域读取权限的账户运行脚本(如域用户、Domain Admin 或具备 Read 权限的组成员)。默认情况下,LastLogonTimestamp 属性在域内各 DC 间同步延迟最多 14 天,适合识别“长期失联”设备,但不适用于精确到小时级的判断。
- 建议在域控制器或已安装
ActiveDirectory模块的管理机上执行 - 确保已导入模块:
Import-Module ActiveDirectory - 若跨林查询,需提前配置信任并指定
-Server参数
基础查询:筛选禁用 + 长期未登录的计算机
以下命令查找所有已禁用、且最后登录时间早于 90 天的计算机账户:
Get-ADComputer -Filter {Enabled -eq $false -and LastLogonTimestamp -lt (Get-Date).AddDays(-90)} -Property Name,LastLogonTimestamp,Enabled,DistinguishedName | Select-Object Name,@{Name='LastLogon';Expression={[DateTime]::FromFileTime($_.LastLogonTimestamp)}},Enabled,DistinguishedName说明:
-
-Filter使用 LDAP 筛选语法,效率高于客户端过滤 -
LastLogonTimestamp是Int64类型,需用[DateTime]::FromFileTime()转换为可读时间 - 若想查“启用但长期未登录”的账户,把
Enabled -eq $false改为Enabled -eq $true
排除干扰项:跳过域控制器和关键系统设备
域控制器(DC)通常不会频繁更新 LastLogonTimestamp,且不应被误判为无效。可通过 OperatingSystem 属性或 DistinguishedName 过滤:
计算机网络安全服务公司网站模板是一款适合提供云安全、网络安全、服务器管理。数据安全服务公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
Get-ADComputer -Filter {(Enabled -eq $false) -and (LastLogonTimestamp -lt (Get-Date).AddDays(-90))} -Property Name,OperatingSystem,LastLogonTimestamp | Where-Object { $_.OperatingSystem -notlike "*Server*" -and $_.DistinguishedName -notmatch "CN=Domain Controllers" } | Select-Object Name,OperatingSystem,@{N='LastLogon';E={[DateTime]::FromFileTime($_.LastLogonTimestamp)}}常见需排除的类型:
- 操作系统含 “Server” 字样的(如 Windows Server 2019)
- OU 路径包含
Domain Controllers - 名称以
DC$结尾的账户(传统命名惯例)
导出结果并批量清理(谨慎操作)
先导出待核查列表,人工复核后再执行删除:
# 导出 CSV(含时间戳和 OU 信息)
Get-ADComputer -Filter {Enabled -eq $false -and LastLogonTimestamp -lt (Get-Date).AddDays(-180)} -Property Name,LastLogonTimestamp,DistinguishedName,CanonicalName | Select-Object Name,@{N='LastLogon';E={[DateTime]::FromFileTime($_.LastLogonTimestamp)}},DistinguishedName,CanonicalName | Export-Csv -Path "StaleComputers.csv" -NoTypeInformation -Encoding UTF8
<h1>如确认无误,可批量禁用(非删除)再观察</h1><p>Get-ADComputer -Filter {Enabled -eq $true -and LastLogonTimestamp -lt (Get-Date).AddDays(-365)} | Disable-ADAccount</p><h1>彻底删除前务必验证——删除不可逆</h1><h1>Remove-ADComputer -Identity "OLD-PC01" -Confirm:$false提醒:
- 删除前建议先禁用账户,观察 1–2 周确认无业务影响
- 避免直接使用
Remove-ADComputer批量删除,尤其生产环境 - 可配合
-SearchBase限定 OU 范围,缩小操作面

















