windows原生不支持事件触发性能数据收集,但可通过计划任务+powershell/批处理脚本+logman命令组合实现条件启动;也可利用计数器阈值警报绑定logman start操作间接触发;需注意修复旧版系统中pla任务的自定义处理程序配置问题。
windows 性能数据收集器任务本身不直接支持“事件触发”(比如某进程启动、磁盘满90%时才开始记录),但可以通过计划任务 + 条件判断 + logman 命令组合实现准自动触发,这是当前系统原生能力下最实用的方式。
用计划任务配合脚本实现条件启动
性能监视器的“数据收集器集”仅支持定时启动(如每天8点),无法响应系统事件。要达成“满足条件才收集”,需绕过GUI,改用命令行+外部逻辑控制:
- 编写一个 PowerShell 或批处理脚本,先检查触发条件(例如:
(Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue -gt 95) - 条件成立后,执行
logman start "MyCollector"启动已预设好的收集器集 - 可同步调用
logman stop或设置采集时长(-rf 01:00:00)自动终止 - 将该脚本添加为计划任务,配置“按需运行”或高频轮询(如每分钟检查一次)
利用阈值警报间接驱动动作
虽然不能直接触发收集,但 Windows 允许为计数器配置阈值警报,并绑定操作:
- 在数据收集器集属性 → “警报”选项卡中,添加规则(如
\Processor(_Total)\% Processor Time > 90) - 设置“当警报触发时”执行操作:启动程序 → 指向一个 .bat 文件
- 该 .bat 文件内容就是
logman start "HighCPULog"(前提是“HighCPULog”已用 logman create 预创建好) - 注意:警报本身不记录数据,它只起“开关”作用;真正记录靠独立配置的收集器集
修复计划任务失效问题(尤其 Win10 1703–2004 之间版本)
若你发现手动设置的“按计划运行”根本没采集数据,大概率是任务计划程序里的操作被错误注册为“自定义处理程序”:
- 打开“任务计划程序库” → Microsoft → Windows → PLA,找到对应任务
- 右键 → 属性 → “操作”选项卡,删除现有的“自定义处理程序”
- 点击“新建”,程序填
C:\windows\system32\rundll32.exe,参数填C:\windows\system32\pla.dll,PlaHost"{你的收集器集名称}" "$(Arg0)" - 保存后,计划即可正常触发收集
这套机制不依赖第三方工具,全部使用系统内置组件,部署简单、权限可控,适合服务器巡检或桌面环境的轻量级自动化监控场景。











