系列1和系列2两篇文章比较简单的介绍了下WMI中WQL的关键字和运算符,有这两样东西我们就能够按照WQL的语法规则来写WQL语句了,等等,我们的WQL要操作的是什么?没错,我们会发现,在WQL语句中还缺少一个要操作的对象,这就是本文要说的,WMI中最重要的一个组成部分——类。用过SQL语句的都应该清楚,无论是在MS SQL 还是MySQL中,我们如果要从数据库中查询数据,必须需要在SQL语句中指定查询的对象——表。在WQL中类的作用就相当于表,我们需要的数据会在不同的类中,而要将数据取出来,就要去找到各种对应的类。
如果我们把WQL比作SQL的话,WMI你就可以粗略的看作是数据库了,而WMI中的类,就是数据库中的表了,而类中返回的各种实例对象,可看作是表中的数据了。这个类比不完全正确,当深入会发现,每当要查询数据的时候,我们需要连接到指定的命名空间下,连接成功后,才能进行类的操作。现在暂时不去细究,初步有个概念就好,等具体操作的时候我们就能够明白了。
那么,在WMI中,我们有多少类可以供WQL查询呢?这个Mitchell倒是没有具体去统计数字,但在普通的操作中,能够涉及到的却并不是十分的多,我们可以用表格的形式列出在Win32下面比较常用的一些类。表格如下:
类名 |
描述 |
Win32_Fan |
系统风扇 |
Win32_Keyboard |
键盘 |
Win32_PointingDevice |
指示设备,如鼠标 |
Win32_CDROMDrive |
CD-ROM |
Win32_DiskDrive |
系统的硬盘 |
Win32_PhysicalMedia |
任何存储设备,在一般的机器上,包含CD-ROM,物理硬盘,软驱,磁带机等 |
Win32_BIOS |
系统BIOS |
Win32_CacheMemory |
系统的Cache内存 |
Win32_MemoryDevice |
内存,含相关联的映射地址 |
Win32_PhysicalMemory |
物理内存 |
Win32_Processor |
CPU |
Win32_NetworkAdapter |
网络适配器,含物理网卡 |
Win32_NetworkAdapterConfiguration |
网络适配器配置 |
Win32_NetworkAdapterSetting |
网络适配器以及其相关设定 |
Win32_Printer |
打印/传真设备 |
Win32_DesktopMonitor |
显示设备 |
Win32_DisplayConfiguration |
显示设备配置 |
Win32_Desktop |
桌面 |
Win32_Environment |
系统环境 |
Win32_Directory |
文件目录,所有的目录 |
Win32_DiskPartition |
磁盘分区 |
Win32_LogicalDisk |
逻辑磁盘 |
Win32_Process |
进程信息 |
Win32_Account |
账户信息 |
Win32_PerfFormattedData |
格式化后的性能数据 |
Win32_Service |
系统服务 |
有了WMI类之后,我们就可以根据自己的需要来写WQL来查询系统中的各个数据了,比如我们想知道当前系统中有多少物理磁盘的存在,只需要下面这样就能返回系统的磁盘实例:
SELECT * FROM Win32_DiskDrive
如果需要进一步了解这些物理磁盘的信息,可以从获取的参数中去查找,这些参数,你可以查找MSDN上的帮助文档即可,是不是非常的方便?
附注:
更多关于WMI类的帮助可以参见官方文档:Management Infrastructure Classes