wevtutil 是什么
wevtutil 是事件日志的命令行总控台:列出通道、查看配置、查询事件、导出日志、启用被关闭的通道,都能一条命令完成。它的价值在于可脚本化——巡检脚本批量拉取多台机器的日志、把日志导出留存、核对通道大小与保留策略是否符合基线,用图形界面反而慢。理解 qe 与 gl 两个子命令,日常排障就够用了。
基本信息
| 适用平台 | Windows Vista 及以后(含 10/11、Server) |
|---|---|
| 常用子命令 | gl 查看日志配置、sl 设置日志、el 列出或启用通道、qe 查询事件、epl 导出日志、cl 清空日志 |
| 查询参数 | qe 支持 /c 条数、/rd:true 逆序、/f 输出格式、/q XPath 条件、/r 远程主机 |
| 查看帮助 | wevtutil <子命令> /? 查看该子命令的完整参数 |
| 权限要求 | 读取系统与应用日志普通用户可做;安全日志与清空操作需管理员 |
| 日志目录 | 默认位于 %SystemRoot%\System32\winevt\Logs |
典型使用场景
- 排障取证:查询指定事件 ID 与时间窗口,导出原始日志留证
- 批量巡检:用脚本拉取多台机器的关键日志摘要,形成日报
- 基线核对:检查通道大小、保留模式与启用状态是否符合要求
- 日志留存:按周期导出并归档,避免自动覆盖后无法回查
- 通道开启:临时启用 Analytic 类通道抓细节,排查完再关闭
常用示例
常用示例
wevtutil el # 列出全部日志与通道名称
wevtutil gl System # 查看 System 日志配置(XML)
wevtutil gl Security | findstr /i "enabled maxSize retention" # 核对关键配置项
wevtutil qe System /c:10 /rd:true /f:text # 最近 10 条,逆序,文本输出
wevtutil qe Security /q:"*[System[(EventID=4624)]]" /c:20 /rd:true /f:text # 按事件 ID 查询
wevtutil qe System /q:"*[System[(Level=1 or Level=2)]]" /c:30 /f:text # 只查错误与警告级别
wevtutil epl System D:\logs\system_20261013.evtx # 导出为 evtx 文件留档
wevtutil sl Microsoft-Windows-GroupPolicy/Operational /e:true # 启用被关闭的通道
REM 远程查询(口令出现在命令行有泄漏风险,谨慎使用)
REM wevtutil /r:SRV01 /u:域\管理员 qe System /c:10 /rd:true /f:text子命令与用途对照
| 子命令 | 用途 | 注意 |
|---|---|---|
| gl | 查看日志/通道配置(XML) | 含大小、保留模式、启用状态,是基线核对依据 |
| sl | 修改日志配置(大小、模式、启用) | 属持久变更,需记录变更单 |
| el | 列出全部日志与通道 | 含 Analytic 与 Debug 类通道,默认多为关闭 |
| qe | 查询事件 | 支持条数、逆序、格式与 XPath 条件 |
| epl | 导出日志到文件 | 取证首选做法:保留原始 evtx |
| cl | 清空日志 | 会破坏取证并生成日志被清除事件,非必要不用 |
Analytic 与 Debug 类通道默认关闭,排查特定问题(如组策略处理细节)需要先启用。这类通道写入量大,排障结束应及时关闭,避免长期占用磁盘与性能。
远程查询用 /r 指定主机,但 /u 与 /p 会把账户口令放在命令行上,会出现在进程列表与历史记录里;受控环境应改用带凭据的会话或远程执行框架。
PowerShell 侧的等价能力
PowerShell 侧的等价能力
Get-WinEvent -ListLog System | Select-Object LogName, IsEnabled, MaximumSizeInBytes, LogMode # 日志配置
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7045; StartTime=(Get-Date).AddDays(-1)} # 按条件查询
Get-WinEvent -LogName System -MaxEvents 20 | Select-Object TimeCreated, Id, LevelDisplayName # 最近事件
wevtutil epl System D:\logs\system.evtx # 导出仍用 wevtutil 最直接
Get-ChildItem "$env:SystemRoot\System32\winevt\Logs" | Sort-Object Length -Descending | Select-Object -First 10 Name, Lengthwevtutil cl 清空日志会同时写入「日志被清除」的记录(安全日志为 1102 事件),这在审计上是明确的敏感动作。排障与取证场景应导出(epl)而不是清空;确实需要清理时必须走变更流程并留说明。