Windows 管理规范(WMI)事件监控脚本实现

陌宇吖_9414

陌宇吖_9414

2026-06-28

183人浏览

原创

wmi事件监控脚本通过订阅机制(如__instanceoperationevent)实时捕获进程启动、服务变更、usb插拔等系统变化,需选对事件类、加within和where过滤,用永久订阅或后台任务保障持久性,并注意权限、稳定性及替代方案。

wmi 事件监控脚本可用于实时捕获系统级变化,比如进程启动、服务状态变更、usb 设备插拔、磁盘卷挂载等。核心在于利用 wmi 的事件订阅机制(__instanceoperationevent 及其子类),避免轮询,提升效率和响应速度。

选择合适的事件类与筛选条件

不同监控目标对应不同 WMI 类。常用事件类包括:

  • Win32_ProcessStartTrace:捕获新进程创建(需启用“审核进程跟踪”策略,且仅限 Windows Server 或专业版/企业版)
  • Win32_ServiceStateChange:监听服务启停(推荐用 Win32_Service 配合 WHERE TargetState = 4 OR TargetState = 1)
  • Win32_VolumeChangeEvent:检测光驱/USB 插拔(Type = 2 表示设备插入,Type = 3 表示弹出)
  • __InstanceModificationEvent:通用修改事件,可配合 Win32_NetworkAdapterConfiguration 监控 IP 变更

务必添加 WITHIN n(如 WITHIN 2)限定事件查询间隔,防止漏事件;用 WHERE 精确过滤,减少无关通知。

PowerShell 中实现持久化事件订阅

使用 Register-WmiEvent 创建临时订阅较简单,但会随会话退出失效。生产环境建议用永久事件消费者(如 ActiveScriptEventConsumer + __FilterToConsumerBinding)或 PowerShell 后台任务持续运行:

windows-healing-gateway
windows-healing-gateway

通过任务计划程序自动监控并自修复 Windows 上的 OpenClaw Gateway,具备 AI 诊断和 Telegram 报警功能。

下载
  • 用 Get-WmiObject -Class __EventFilter 检查已有过滤器,避免重复注册
  • 脚本中加入错误重试逻辑,例如 WMI 服务重启后自动重建订阅
  • 将事件处理封装为函数,通过 -Action 参数传入,便于日志记录或触发告警
  • 示例片段:Register-WmiEvent -Query "SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2" -SourceIdentifier USBPlugIn -Action { Write-Host "USB detected: $($_.SourceEventArgs.NewEvent.DriveName)" }

权限与稳定性注意事项

WMI 事件监控依赖 WMI 服务(winmgmt)及 DCOM 权限,常见问题包括:

  • 普通用户默认无权订阅部分高危事件(如进程创建),需加入 Performance Monitor Users 或 Administrators 组
  • 远程监控需开启防火墙规则(如 Windows Management Instrumentation (WMI-In))、配置 DCOM 权限,并确保目标主机启用 Remote Enable 权限
  • 长时间运行的脚本应定期调用 Get-WmiObject -Class __TimerInstruction 或检查事件队列积压,防止内存泄漏或事件丢失
  • 避免在事件响应中执行耗时操作(如同步网络请求),建议写入队列由独立线程/Job 处理

替代方案与轻量级补充

对于简单场景或资源受限环境,可考虑组合使用:

  • Windows 事件日志 + wevtutil / Get-WinEvent:监听 Security 或 System 日志中特定 ID(如 4688 进程创建、7045 服务安装),无需 WMI 权限,兼容性更好
  • Task Scheduler 触发器:基于事件日志 ID 创建任务,调用 PowerShell 脚本,适合低频、非实时需求
  • ETW(Event Tracing for Windows):比 WMI 更底层、性能更高,但开发复杂度上升,适用于高频进程/线程级追踪

不复杂但容易忽略。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

windows

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2692

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

896

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

809

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2436

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4512

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

727

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习