◎WMI轻松入门之三——获得类的实例

原创 2007年09月30日 08:47:00

2.获得类的实例

我们有4种方法获得类的实例,其中方法1和方法2是通过SwbemServices对象的InstancesOf方法和ExecQuery方法来获得某个类的多个实例组成的集合对象。方法3和方法4则是返回单独的类的实例,即返回的是一个SWbemObject对象。

1InstancesOf方法获得类的实例集合

InstancesOf方法的语法参数格式如下:

SwbemServices.InstancesOf(strClass)

strClass为类名,例如"Win32_Service"

回顾例二,就是用语句:Set objSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Processor ") 来获得"Win32 Processor "类的所有实例集合,然后我们可以用

For Each objSWbemObject In objSWbemObjectSet

……

Next 作者:临汾市外事旅游局薛靖澜,转载请注明

语句获得每一个类的实例SWbemObject对象,然后就可以根据我们的需要,进行相应的操作。

2ExecQuery方法获得类的实例集合

InstancesOf方法不一样的是,ExecQuery方法可以通过查询语句,只返回匹配部分实例和属性。ExecQuery方法的语法参数格式如下:

SwbemServices.ExecQuery(strQuery)

strQueryWMI查询语言(WQL)构造的一个查询语句字符串。

例如:作者:临汾市外事旅游局薛靖澜,转载请注明

Set objSWbemObjectSet = objSWbemServices.ExecQuery("select ProcessorId from Win32_Processor where DeviceID='cpu0'")

3Get方法获得一个类的实例(SWbemObject对象)

此方法也就不必再用 For Each objSWbemObject In objSWbemObjectSet :……:Next 语句从SWbemObjectSet对象中获得每一个类的实例SWbemObject对象,Get方法的语法参数格式如下:

SwbemServices.Get([strObjectPath][.KeyProperty='Value'])

strObjectPath是类的名字

KeyProperty是主键属性名

Value是指定的主键属性值

这里要注意的是如果要获得一个类的实例,则strObjectPath.KeyProperty='Value'中的任何一项都不能省略,例如:

Set objSWbemServices = GetObject("winmgmts:")

Set objSWbemObject = objSWbemServices.Get("Win32_Processor.DeviceID='cpu0'")

Wscript.echo “CPU的型号为" & objSWbemObject.ProcessorId

看,结果一样,脚本却简化了不少。

4)直接用moniker名字法获得一个类的实例

在说明Moniker名字法的时候我们说过,当包括最后2项时,返回的是一个类的单独实例,如:Set objSWbemObject = GetObject("winmgmts:Win32_Processor.DeviceID='cpu0'")

Wscript.echo "首枚CPU序列号:" & objSWbemObject.ProcessorId

是不是更加简单?仅仅2条语句就获得了CPU的序列号。

3.读取类的实例属性,调用类的方法

实在是太多了,你可以参照C:/WINDOWS/system32/wbem/cimwin32.mfl文件中,对所有类的属性和方法的描述。也可以用下列代码查询,虽然看起来有点困难,不过看的多了也就明白了。作者:临汾市外事旅游局薛靖澜,转载请注明

strClass=inputbox("请输入你要查询的类")

strComputer = "."

strNameSpace = "root/cimv2"

Const wbemFlagUseAmendedQualifiers = &h20000

Set objWMIService = GetObject("winmgmts://" & strComputer & "/" & strNameSpace)

Set objClass = objWMIService.Get(strClass, wbemFlagUseAmendedQualifiers)

strMOF = objClass.GetObjectText_

WScript.Echo strMOF

 

WMI常见问题及解决

WMI常见问题及解决本文由紫云仙人贡献WMI 常见问题及解决说明:此文档 WMI 问题及解决的集合,可能涉及到我公司多个产品,请选择参考使用。 一. 常见问题及解决方法  1 1. 当通过 WMI 添...
  • kpp2008
  • kpp2008
  • 2011年07月04日 00:19
  • 6360

4.COM使用实例——WMI的使用

本节我们以使用WMI遍历当前电脑进程说明通过COM使用WMI的方法。代码可以直接复用。...
  • wenzhou1219
  • wenzhou1219
  • 2017年06月15日 13:04
  • 820

vc使用wmi例子

#define _WIN32_DCOM #define _WIN32_WINNT 0X0500 #include #include #include #include "wbemidl....
  • jiftlixu
  • jiftlixu
  • 2012年04月18日 15:31
  • 3158

利用GetObject("WinMgmts:")获取系统信息

转自:http://www.cnblogs.com/dongzhiquan/archive/2010/09/12/1994556.html  有补充 用WMI对象列出系统所有进程: ----I...
  • shellching
  • shellching
  • 2013年11月27日 13:42
  • 7588

vbs遍历and关闭进程脚本 objWMIServices.Execquery

  • 2010年06月20日 13:11
  • 850B
  • 下载

WMI获取信息补充(三)(Win32_Volume,Win32_EncryptableVolume,Win32_TPM)

详细信息请参考以下连接,注意各类对操作系统的要求,以及各类所在命名空间的不同。Win32_Volume Classhttp://msdn.microsoft.com/en-us/library/aa3...
  • chengly0129
  • chengly0129
  • 2010年06月25日 15:26
  • 891

Windows WMIC命令使用详解(附实例)

Windows WMIC命令使用详解(附实例) 第一次执行WMIC命令时,Windows首先要安装WMIC,然后显示出WMIC的命令行提示符。在WMIC命令行提示符上,命令以交互的方式执行执...
  • czl8897098
  • czl8897098
  • 2016年06月22日 11:39
  • 986

◎WMI轻松入门之二

解析类定义在上一篇文章中我们说过,WMI中用类对托管资源进行抽象定义和和管理,那么,什么是类?类的定义相信在很多面向对象的计算机教材中都能找到,我的理解是:类,是包含了一组独立功能的模块,这个模块由数...
  • jinghaianlange
  • jinghaianlange
  • 2007年07月21日 22:29
  • 1180

◎WMI轻松入门之一

一、基本概念其实我给文章起这样的名字,绝对没有轻视WMI的意思,事实上就连微软也有“WMI非常难于学习而且更难于使用”的说法,在近日的学习过程中更感觉到了WMI检索功能的强大,之所以起个“轻松入门”的...
  • jinghaianlange
  • jinghaianlange
  • 2007年07月17日 10:10
  • 2092

Windows WMIC命令使用详解(附实例)

[From] http://www.ynpxrz.com/n614885c2025.aspx 温馨提示:易贤网小编为您整理了“Windows WMIC命令使用详解(附实例)”,方便广大网...
  • kolabb
  • kolabb
  • 2016年08月16日 15:55
  • 2171
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:◎WMI轻松入门之三——获得类的实例
举报原因:
原因补充:

(最多只允许输入30个字)