Process Monitor 学习笔记(5.9):Procmon 的自动化操作与命令行速查
Process Monitor 学习笔记(5.9):Procmon 的自动化操作与命令行速查
- Process Monitor 学习笔记(5.9):Procmon 的自动化操作与命令行速查
- 1)为什么要自动化?
- 2)常用命令行开关(速查表)
- 3)典型自动化用法
- 用法 A:**无界面长跑采集(环形缓冲)**
- 用法 B:**定时采集 + 定时收束(双批处理)**
- 用法 C:**一键重放历史日志(套用新模板)**
- 4)高质量“诊断模板(PMC)”的自动化准则
- 5)与计划任务整合(示例)
- 6)生产环境的三条“止损线”
- 7)常见坑 & 快速修复
- 8)一键总控脚本(可直接改造)
- ✅ 小结
Process Monitor 学习笔记(5.9):Procmon 的自动化操作与命令行速查
目标:把 Procmon 从“手工点点点”的 GUI 工具,升级为 可脚本化、可定时、可批量复用 的诊断武器。
说明:不同版本的 Procmon 命令行参数可能略有差异,下文给出业界常用组合与实战脚本。若你的版本提示不支持,请以本机 procmon 与官方说明为准。
1)为什么要自动化?
- 无人值守:夜间、节假日复现问题,照样抓得到。
- 可重复:一套配置(PMC)走天下,团队共享。
- 低扰动:最小化/静默运行,减少对问题现场的影响。
- 可集成:配合计划任务、DevOps/EDR 统一拉取证据。
2)常用命令行开关(速查表)
场景 | 常用参数 | 作用 | ||
---|---|---|---|---|
首次运行 | /AcceptEula | 静默接受 EULA(无人值守必备) | ||
加载模板 | /LoadConfig <cfg.pmc> | 载入过滤器/高亮/列集等配置 | ||
静默启动 | /Quiet 或 /Minimized | 静默(或最小化)启动并开始采集 | ||
落盘采集 | /BackingFile <log.pml> | 事件写入后台文件(环形缓冲,更抗压) | ||
停止采集 | /Terminate | 结束当前采集实例并安全关闭日志 | ||
打开日志 | /OpenLog <log.pml> | 打开既有 PML | ||
导出结果 | `/SaveAs <out.csv | out.xml | out.pml>` | 将当前打开的日志导出为 CSV/XML/PML |
载入后再导出 | /LoadConfig <cfg.pmc> + /OpenLog + /SaveAs | 用统一模板重放并导出已有日志 |
小贴士:PMC 是“方法论”(过滤/高亮/列集),PML 是“数据结果”。
3)典型自动化用法
用法 A:无界面长跑采集(环形缓冲)
:: 1) 以团队模板静默启动并采集到环形日志
procmon.exe ^/AcceptEula ^/LoadConfig C:\diag\templates\Procmon_HighIO_v2.pmc ^/Quiet ^/BackingFile D:\pm-logs\trace_running.pml:: ……让它跑着即可(计划任务/脚本控制结束时机)
- 适合:间歇性复现的问题、长时间观察。
- 优点:占内存更低、日志不炸盘(环形覆盖)。
用法 B:定时采集 + 定时收束(双批处理)
start_capture.cmd
@echo off
set LOG=D:\pm-logs\trace_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%.pml
set CFG=C:\diag\templates\Procmon_Baseline_v1.pmcprocmon.exe /AcceptEula /LoadConfig "%CFG%" /Quiet /BackingFile "%LOG%"
stop_and_export.cmd
@echo off
set LOG=%1
if "%LOG%"=="" set LOG=D:\pm-logs\trace_running.pml:: 1) 停止当前采集
procmon.exe /Terminate:: 2) 用统一模板打开并导出 CSV 便于检索
set OUT=%LOG:.pml=_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.csv%
procmon.exe /LoadConfig C:\diag\templates\Procmon_HighlightErrors_v1.pmc ^/OpenLog "%LOG%" ^/SaveAs "%OUT%"echo Exported to %OUT%
- 通过任务计划:18:00 执行
start_capture.cmd
,23:00 执行stop_and_export.cmd
。 - 导出的 CSV 便于用 Excel/Power BI/grep 二次检索。
用法 C:一键重放历史日志(套用新模板)
procmon.exe /LoadConfig C:\diag\templates\Procmon_RegWrite_v1.pmc ^/OpenLog D:\pm-logs\incident_20250302.pml ^/SaveAs D:\pm-logs\incident_20250302_filtered.csv
- 适合:事后复盘,统一口径再次过滤并批量导出。
4)高质量“诊断模板(PMC)”的自动化准则
- 先过滤,再落盘:模板中勾选 Drop Filtered Events,把无关事件挡在源头(长跑更稳)。
- 高亮异常优先:ACCESS DENIED / NAME NOT FOUND / SHARING VIOLATION / TIMEOUT。
- 列集为分析而生:
Time of Day, Process Name, PID, Operation, Path, Result, Detail, Duration
。 - 把栈/Profiling 单做“调试模板”:平时关闭;疑难时短跑开启。
- 路径用前缀/变量化:少写死个人路径,更多用程序名/目录前缀。
- 统一命名与版本:
Procmon_<场景>_vX.pmc
,并带 CHANGELOG。
5)与计划任务整合(示例)
- 触发器:每天 18:00 开始采集;23:00 停止并导出
- 运行账户:本地管理员/服务账户
- 选项:不在电池电量低时停止;允许运行超过 3 小时
记得第一次在该账户下以
/AcceptEula
方式跑一遍,避免 EULA 弹窗阻断无人值守。
6)生产环境的三条“止损线”
- 磁盘健康:将
/BackingFile
放到专用分区/盘;保留 10GB 以上缓冲。 - 白名单:把
procmon.exe
与日志目录加入杀软/EDR 排除清单,避免实时防护拖慢采集。 - 资源上限:长跑模板一定勾 Drop Filtered Events;必要时降低采集维度(先抓 IO/注册表,后补栈)。
7)常见坑 & 快速修复
现象 | 可能原因 | 快速修复 |
---|---|---|
/LoadConfig 后仍“满屏雪花” | 没勾 Drop Filtered Events,或过滤条件过宽 | 在 PMC 勾选 Drop;按进程名/目录前缀收窄 |
导出 CSV/XML 为空 | 停止前未刷新/日志未正确关闭 | 先 procmon.exe /Terminate ,再 /OpenLog + /SaveAs |
无人值守时卡在首启弹窗 | EULA 未被接受 | 加 /AcceptEula ;用目标账户预跑一次 |
另一台机器套用模板失灵 | 路径/语言/版本差异 | 改为更中性匹配(进程名/Operation/目录前缀)并统一 Procmon 版本 |
8)一键总控脚本(可直接改造)
@echo off
set CFG=C:\diag\templates\Procmon_HighIO_v2.pmc
set LOGROOT=D:\pm-logs
if not exist "%LOGROOT%" mkdir "%LOGROOT%"set TS=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%
set LOG=%LOGROOT%\trace_%TS%.pml
set CSV=%LOGROOT%\trace_%TS%.csv:: 启动采集(静默+环形落盘)
procmon.exe /AcceptEula /LoadConfig "%CFG%" /Quiet /BackingFile "%LOG%":: ——此处等待/复现(或由计划任务分离 stop 步骤)——
timeout /t 900 >nul & rem 演示:采集15分钟:: 收束并导出
procmon.exe /Terminate
procmon.exe /LoadConfig "%CFG%" /OpenLog "%LOG%" /SaveAs "%CSV%"echo Done. CSV: %CSV%
✅ 小结
- 命令行让 Procmon 变身自动化“数据采集器”:可定时、可静默、可模板化。
- /LoadConfig + /BackingFile + /Terminate + /SaveAs 是四件套,覆盖 90% 的自动化场景。
- 以 PMC 模板库 标准化团队抓取口径,配合计划任务与批处理,实现 稳定、低扰动、可复盘 的系统级诊断。