什么是WMI
WMI是Windows 2K/XP管理系统的核心;对于其他的Win32操作系统,WMI是一个有用的插件。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API;相反,操作系统的不同部分都可以插入WMI。
也就是说,利用WMI我们能更方便地管理 Windows 资源 — 例如磁盘、事件日志、文件、文件夹、文件系统、网络组件、操作系统设置、性能数据、打印机、进程、注册表设置、安全性、服务、共享、用户、组等等。。
二、对WMI中一些名词的解释
首先看到下面的一个例子,这段代码能够输出物理内存的大小(不是用已有的函数):
strComputer="."strComputer="."wbemServices = ObjGet("winmgmts:\\" & strComputer & "\root\cimv2")strComputer & "\root\cimv2")wbemObjectSet= wbemServices.InstancesOf("Win32LogicalMemoryConfiguration")ForwbemServices.InstancesOf("Win32LogicalMemoryConfiguration")ForwbemObject In wbemObjectSet ConsoleWrite("Total Physical Memory (kb): " &wbemObjectSet ConsoleWrite("Total Physical Memory (kb): " &wbemObject.TotalPhysicalMemory) Next
在对代码解释前,我先解释一下一些名词的含义:
对象:所谓对象,就是建立COM组件时的返回值,像$wbemServices就是,我们称之为SwbemServicesWMI服务对象,至于$wbemObjectSet则叫做SwbemObject类实例集合对象,后文我还会提到SwbemLocator教本库对象。它们的层级关系如下:SwbemLocator教本库对象→SwbemServicesWMI服务对象→SwbemObject类实例集合对象→SwbemObject类的实例。
属性:以wbemServices.InstancesOff为例,我们就说wbemServices.InstancesOff为例,我们就说wbemServices对象的InstancesOff属性。
类:WMI能实现的操作有很多种,不同种类的操作都是分开的,我们称之为类,上面代码中的"Win32_LogicalMemoryConfiguration"就是一个类。
命名空间:类也分很多种,功能相近的类分在一起就是命名空间,比如说上面代码中的\root\cimv2。而另一个常用的命名空间是root\DEFAULT。例如,事件日志、性能计数器、Windows 安装程序和 Win32 提供程序都存储在 root\cimv2 命名空间中。另一方面,注册表提供程序存储在 root\DEFAULT 命名空间中。
集合:$wbemObjectSet的数据类型属于集合,用FOR...IN...能对其进行列举。
三、使用WMI的基本步骤
1.获取SwbemServicesWMI服务对象,或者说连接到目标计算机的命名空间
strComputer="."strComputer="."wbemServices = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
2.获取类的集合对象
wbemObjectSet=wbemObjectSet=wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")
3.使用指定对象的属性进行操作
For
本文转自hcy's workbench博客园博客,原文链接:http://www.cnblogs.com/alterhu/archive/2012/04/07/2435931.html,如需转载请自行联系原作者。