欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WMI入门教程之WMI中的类在哪里?

程序员文章站 2022-03-29 21:42:37
使用wmi归根到底是对wmi类的访问,如何找到合适的类是其中关键的一步。我一直在为找不到合适的类和命名空间苦恼。你也有这样的问题吗? 类层次结构   wmi的类是以命名...

使用wmi归根到底是对wmi类的访问,如何找到合适的类是其中关键的一步。我一直在为找不到合适的类和命名空间苦恼。你也有这样的问题吗?

类层次结构

  wmi的类是以命名空间和继承层次方式组织的,呈树形结构。命名空间的根是root,在它的下面还有十几个命名空间,最常用的是root\cimv2。命名空间的信息存储在静态类__namespace类中,要查询当前命名空间下的所有命名空间,可以查看__namespace类的实例。以下是在我的机器上使用powershell查询到的命名空间:

复制代码 代码如下:

ps c:\users\idsswtt> get-wmiobject -class __namespace -namespace root | select name

name
----
subscription
default
cimv2
cli
nap
microsoftiisv2
security
smsdm
ccmvdi
rsop
webadministration
ccm
wmi
directory
policy
virtualization
interop
hardware
servicemodel
microsoft
aspnet

关于命名空间更详细的信息,可以写一个递归的脚本来取得,或者从wmi入门(二):如何使用wmi中提到的wmi cim studio工具中查到。

常用wmi类

  wmi体系结构中有成百上千个类。我们经常用到的只有其中一部分。其中有些是用来查询实例的,另一些用来查询类的schema的。除了上面提到的__namespace类,我们还会用到__win32provider类,来查询当前系统中都有哪些提供程序。这两个类是系统类。

  此外,还有两类wmi类我们经常用到:cim_*类和win32_*类。前者是wmi的核心类和公共类,很多时候也被称为cim核心类和公共类。后者是win32扩展类,我们查询实例多在win32扩展类中查询。例如win32_product、win32_logicaldisk等。

wmi类查找手册?

  很遗憾的是,到目前为止。我没有发现一个好用的wmi类查找手册。但在微软msdn网站上,有一个分类。我们可以依照这个分类来做查询。以下几个链接是我经常用到的,贴在这里,希望你能用到。

  wmi reference

  win32 classes

  wmi providers

结语

  看完上面我写的这些东西,如果你还是找不到你要的类,那你就只能怪微软了。我觉得微软为wmi做的还是太少,至少在类查询这一块儿是这样。在微软为wmi投入更多之前,我们只能依赖经验和搜索引擎来寻找适当的类了。