wmi
导语
wmi全称为Windows Management Instrumentation,在win10下是一个非常好使的插件,可以用来管理、监控计算机资源。
简介
WMI基于CIMOM,即公共信息模型对象管理器,是一个描述操作系统构成单元的对象数据库。WMI有一组API,因此很多语言都可以对wmi进行相应的调用。
windows官方建议使用VB和C#。(但没必要
针对WMI的脚本对象编程本质上来将就是针对CIM(Common Information Model,公共信息模型)的编程,WMI的获取与操作的内容都来自于CIM存储库
一般使用wql语句来获取想要的内容,wql类似于sql,比如下面这句。usagelist = wmi.ExecQuery(r'select IDProcess,Name,PercentProcessorTime from Win32_PerfFormattedData_PerfProc_Process')
就可以返回进程id,进程名和他的CPU占用率,非常的好用。
使用
工具
WMI支持Powershell、Vbscript和C#script,而windows本身也提供了几个UI工具来使用,包括WMIC.exe、WBEMTest.exe和WMI Administrative Tools等。
直接在cmd输入wbemtest即可使用WBEMTest
点击连接,使用root/cimv2的命名空间。多数为windows托管资源建模的类都在其中,包括关于计算机、磁盘、外围设备、文件、文件夹、文件系统、网络组件、操作系统、打印机、进程、安全性、服务、共享、SAM 用户及组,以及更多资源的信息。
然后我们点选枚举类,啥也不输入,选择递归,即可列出这个命名空间内的各个类。
当然,对于想要实现的某些特定需求,我们一定要获知具体是那个类在管理他,只有如此才能实现对其操作进而达到目标。这如此多的类,当然需要借助面向google编程技巧才行啦。
当然,in case你想完善而全面的了解各个类所控制的资源
WMI Reference
然而,如果只是这样使用UI或者是命令行工具,显然是无法满足我们这些小可爱的需求的,那么我们要怎样使用脚本去操作wmi呢?
Python
当然首先建议你去用VB或者.NET编程实现,毕竟官方原生支持,相关文档也会多一点。不过python的好处不正是如果有大佬做了相应的包并且还挺好用的话,像我一样的菜逼就能非常灵动的使用了吗(误
言归正传,首先你得安装wmi模块,这个模块基本上是从包装了一下的pywin32模块。用pip instal都可以简单的意见安装。建议都装了。
然后就很简单了
比如我编写的监控CPU信息的脚本
import wmi |
当然,如果你用pywin32的话,只需要把wmi=wmi.WMI()
这句变成wmi=pywin32.GetObject(r'winmgmts:/root/cimv2')
即可
参考:
https://www.cnblogs.com/ceachy/archive/2013/03/22/WMI_Usage.html
https://wenku.baidu.com/view/dfbf88f14693daef5ef73d12.html