可利用PowerShell结合Active Directory模块筛选PasswordLastSet超180天且非域控制器的计算机对象,导出CSV人工复核后,用-WhatIf预览再批量删除并记录日志。
可以利用powershell结合active directory模块,通过筛选“最后登录时间”或“密码最后设置时间”来识别长期未使用的计算机对象,再安全批量删除。关键在于先准确识别、再验证、最后执行,避免误删。
确认AD模块已安装并连接域控制器
确保运行脚本的机器已安装 RSAT-AD-PowerShell 功能(Windows 10/11 或 Server 系统),并以具有AD删除权限的账户登录:
- 安装命令(管理员权限运行):Add-WindowsCapability -Online -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"
- 导入模块:Import-Module ActiveDirectory
- 确认可通信:Get-ADDomain(应返回当前域名信息)
筛选“长期未使用”的计算机对象
计算机对象在AD中不记录“最后登录”,但可通过以下两个可靠属性判断活跃性:
- LastLogonTimestamp:跨域复制的近似最后登录时间(延迟通常≤14天),适合批量筛查
- PasswordLastSet:计算机每30天自动向域发起一次密码更改;若该值距今超90–180天,基本可判定已离线或废弃
示例:查找 PasswordLastSet 超过180天的计算机(排除默认的 Domain Controllers):
Get-ADComputer -Filter {(PasswordLastSet -lt (Get-Date).AddDays(-180)) -and (OperatingSystem -notlike "*Server*") -and (Name -notlike "DC*")} -Properties PasswordLastSet,LastLogonTimestamp | Select-Object Name,PasswordLastSet,LastLogonTimestamp导出清单并人工复核(强烈建议)
不要跳过这一步。将候选对象导出为CSV,检查是否含测试机、虚拟机模板、保留设备等:
计算机网络安全服务公司网站模板是一款适合提供云安全、网络安全、服务器管理。数据安全服务公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
- 导出命令:... | Export-Csv -Path "C:\StaleComputers.csv" -NoTypeInformation
- 打开CSV,按 PasswordLastSet 排序,重点关注名称含 test、dev、temp、old、vm- 等关键词的对象
- 对存疑对象,可用 Test-ComputerSecureChannel -Repair 或远程ping辅助验证(非必需,仅参考)
执行批量删除(带日志与模拟开关)
确认清单无误后,用 -WhatIf 先预览,再正式删除:
- 预览将删除哪些项:Get-ADComputer -Filter {...} | Remove-ADComputer -WhatIf
- 正式删除并记录日志:Get-ADComputer -Filter {...} | ForEach-Object { Remove-ADComputer $_.DistinguishedName -Confirm:$false -Verbose 2>&1 | Out-File "C:\DeleteLog.txt" -Append }
- 补充:加 -ProtectedFromAccidentalDeletion $false 可绕过保护策略(需提前用 Set-ADComputer 关闭,或在删除前临时禁用)
整个过程重在验证前置、操作留痕、权限最小化。只要属性筛选逻辑合理、人工核对到位,批量清理既高效又可控。










