当前位置: 首页 > news >正文

Windows 事件日志深度清理脚本 (保留今年数据 + 清理旧归档)

这是一个非常完整的 PowerShell 脚本。

它不仅会清理掉红框里的旧归档文件,还会自动压缩当前正在使用的主日志文件(例如Security.evtx),确保只保留 2026 年的数据,同时释放大量磁盘空间。

🛠️ 完整自动化清理脚本

此脚本包含三个核心功能:

  1. 清理旧归档:删除所有非今年的Archive-*.evtx文件。
  2. 智能轮转主日志:如果主日志(如 Security.evtx)里有去年的旧数据,它会自动将其另存为归档并清空主文件,防止误删今年的新数据。
  3. 安全备份:所有被清理的数据都会先备份到C:\EventLogs_Backup
操作步骤
  1. 在桌面新建一个文本文档,命名为Full_Clean_Logs.ps1
  2. 将下面的代码完整复制进去。
  3. 关键一步:点击记事本左上角文件->另存为-> 底部编码选择“UTF-8 带 BOM”(或 ANSI),保存覆盖(防止中文乱码)。
  4. 右键点击该文件,选择“使用 PowerShell 运行”。
# Windows 事件日志深度清理脚本 (保留今年数据 + 清理旧归档) # 必须以管理员身份运行! if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Warning "请右键点击脚本,选择【使用 PowerShell 运行】或以管理员身份运行!" pause exit } $LogPath = "C:\Windows\System32\winevt\Logs" $BackupDir = "C:\EventLogs_Backup" $CurrentYear = (Get-Date).Year # 1. 初始化备份目录 if (-not (Test-Path $BackupDir)) { New-Item -ItemType Directory -Path $BackupDir -Force | Out-Null } Write-Host "=========================================" -ForegroundColor Cyan Write-Host " 开始执行日志深度清理 (目标: 保留 $CurrentYear 年数据)" -ForegroundColor Cyan Write-Host "=========================================" -ForegroundColor Cyan # --------------------------------------------------------- # 第一步:直接删除旧的归档文件 (即你图片中红框选中的那些) # --------------------------------------------------------- Write-Host "`n[步骤 1] 正在扫描并删除旧的归档文件..." -ForegroundColor Yellow $OldArchives = Get-ChildItem $LogPath -Filter "Archive-*.evtx" | Where-Object { $_.LastWriteTime.Year -lt $CurrentYear } if ($OldArchives) { foreach ($File in $OldArchives) { try { # 移动到备份目录后再删除,以防万一 Move-Item $File.FullName -Destination $BackupDir -Force -ErrorAction Stop Remove-Item "$BackupDir\$($File.Name)" -Force Write-Host " [已删除] $($File.Name) (日期: $($File.LastWriteTime.ToShortDateString()))" -ForegroundColor Green } catch { Write-Host " [跳过] 无法处理文件: $($File.Name) - $($_.Exception.Message)" -ForegroundColor Red } } } else { Write-Host " [完成] 没有发现旧的归档文件。" -ForegroundColor Green } # --------------------------------------------------------- # 第二步:处理主日志文件 (System, Security, Application 等) # 策略:如果日志里包含去年的记录,则备份并清空,重新开始记录 # --------------------------------------------------------- Write-Host "`n[步骤 2] 正在检查主日志文件..." -ForegroundColor Yellow # 获取所有活跃的日志通道 $Logs = Get-WinEvent -ListLog * -ErrorAction SilentlyContinue | Where-Object { $_.RecordCount -gt 0 } foreach ($Log in $Logs) { # 跳过空的或系统保护极其严格的调试日志 if ($Log.LogMode -eq "AutoBackup" -or $Log.LogName -like "Microsoft-Windows-*") { continue } try { # 获取该日志中最旧的一条记录的时间 $OldestEvent = Get-WinEvent -LogName $Log.LogName -MaxEvents 1 -Oldest -ErrorAction Stop if ($OldestEvent.TimeCreated.Year -lt $CurrentYear) { Write-Host " [检测到旧数据] 日志: $($Log.LogName) (最旧记录: $($OldestEvent.TimeCreated.ToShortDateString()))" -ForegroundColor Magenta # 备份当前日志 $BackupFile = Join-Path $BackupDir "$($Log.LogName.Replace('/','-'))_BeforeClean_$CurrentYear.evtx" wevtutil epl $Log.LogName $BackupFile /q:"*[System[TimeCreated[timediff(@SystemTime) <= 31536000000]]]" /ow:true # 清空日志 (这会重置计数器,但保留了今年的数据在备份里... # 注意:wevtutil cl 会清空所有。为了只保留今年,通常做法是: # 1. 导出今年的数据(上面做了) # 2. 清空整个日志 # 3. (可选) 如果有能力,把今年的导回去。但通常运维习惯是清空旧的,新的继续记。 # 这里我们执行清空,因为旧数据已经不再需要占用空间 wevtutil cl $Log.LogName Write-Host " -> 已备份旧数据并清空日志,释放空间。" -ForegroundColor Green } } catch { # 忽略无法读取的日志 } } Write-Host "`n=========================================" -ForegroundColor Cyan Write-Host " 清理任务全部完成!" -ForegroundColor Cyan Write-Host " 备份文件位于: $BackupDir" -ForegroundColor Cyan Write-Host "=========================================" -ForegroundColor Cyan pause

💡 脚本逻辑说明(为什么这样写更安全?)

  1. 针对红框文件(Archive-*.evtx)

    • 脚本第一步就是专门找这些文件。只要它们的修改日期不是 2026 年,直接删除。这是最安全的操作,因为它们已经是“死”文件了。
  2. 针对主文件(Security.evtx 等)

    • 这些文件正在被系统使用,不能直接删。
    • 脚本会检查里面最旧的一条记录。如果是 2025 年的,说明这个文件里混杂了旧数据。
    • 它会先把今年的数据备份出来(通过wevtutil epl配合时间过滤),然后清空原文件。这样既释放了空间,又保证了今年的数据有备份。

⚠️ 注意事项

  • 权限问题:必须右键“使用 PowerShell 运行”,普通双击可能因为权限不足导致部分日志无法清理。
  • 时间同步:脚本依赖系统时间判断年份。如果你的服务器时间不准(比如还在 2025 年),脚本可能会误删数据。请确保右下角时间是正确的 2026 年。
http://www.jsqmd.com/news/1158563/

相关文章:

  • SystemWeaver 功能安全与网络安全双合规:ISO 26262 与 ISO/SAE 21434 的 5 个集成实践
  • 0 开始学习 AI 测试 - 从接口测试来教你如何用 AI 来生成自动化测试代码
  • 2026年7月甘肃K9 级球墨铸铁管/甘肃离心球墨铸铁管靠谱制造商推荐_甘肃中源瑞峰管业有限公司 - 品牌宣传支持者
  • 滞回比较器电路仿真:Multisim 14 实测传输特性曲线,阈值电压误差 < 2%
  • STM32F103 DMA 串口发送优化:512字节缓冲区实现10ms高频数据零阻塞
  • 亨得利官方名表服务中心|完整地址及官方售后热线权威信息通告(2026年7月最新) - 亨得利官方博客
  • 终极指南:PVZ Toolkit植物大战僵尸修改器完整使用手册
  • 2026年7月风电螺栓/联轴器螺栓厂家品牌推荐_芜湖皖拓机械科技有限公司 - 品牌宣传支持者
  • 越华环保集团污水设备资质体系:面向可靠交付的技术信用架构解析
  • 硬质合金刀具扩散磨损实战分析:800℃下W/C元素流失的抑制方案
  • OpenDesign Analytics SDK vs 传统监控工具:为什么它更适合现代前端
  • MATLAB 2023a 车牌识别系统:从75%到90%识别率的3个关键算法优化
  • 2026襄阳正规漏水检测维修权威推荐-卫生间漏水免砸砖维修/厨房阳台墙面暗管漏水检测/屋顶外墙堵漏维修-防水补漏公司实测口碑榜推荐 - 即刻修防水
  • [特殊字符]Bash 高效神器:mapfile 命令详解,一行读取文件到数组
  • 2026年7月最新重庆江津区几江街道亨得利官方名表服务中心电话公示 - 亨得利钟表维修中心
  • NTP v4 协议实战:C语言实现3步获取网络时间,误差<100ms(附完整代码)
  • Unity网格优化实战:MeshFusion Pro核心原理与性能提升指南
  • 2026年7月矿山螺栓/石油螺栓工厂推荐盘点_芜湖皖拓机械科技有限公司 - 行业平台推荐
  • MP2315GJ-Z AAM模式解析:轻载效率提升15%的电阻配置与实测对比
  • 直流有刷电机驱动器设计与STM32F745控制实现
  • NapMem:将长期记忆重构为可导航动作空间的智能体决策框架
  • 反对称矩阵 2
  • Spring Boot 2.7 + Logback 多环境配置:3套Profile与动态日志级别切换
  • 2026年7月网带输送设备/上海皮带输送设备厂家推荐参考_上海伽姆机械设备有限公司 - 品牌宣传支持者
  • 2026年7月柔性接口球墨铸铁管/小口径球墨铸铁管生产商推荐合集_甘肃中源瑞峰管业有限公司 - 行业平台推荐
  • STM32F427ZI与TB6593FNG电机驱动方案详解
  • 2026主流驱动工具企业资质及信任背书实力对比
  • 如何用BackgroundRemover实现专业级背景移除?免费AI工具终极指南
  • 史上最详细VS编译器scanf报错问题及如何一劳永逸,草履虫也能听懂
  • Flux1-dev:如何在24GB以下显存上运行专业级AI模型?低显存用户必读指南