WMI的一个小工具,提供给爱好WMI的朋友,浏览WMI最易用的工具是CIM Studio,CIM Studio是一个WMI工具!这是一个更高级的工具,用于查看和编辑CIM存储库中类的属性和方法.
此外,它允许修改,创建和删除类以及它们的实例.这可以通过使用浏览器界面手工完成,或通过使用MOF(被管对象格式)完成.CIM Studio中可用的一个向导把现存的类或实例输出到MOF文件中.另一个向导则把MOF文件输入到CIM存储库中.
1、单击页面上部的电脑图标,会显示一个对话框,单击“Connect”按钮,如图1所示;
图1
2、任何时候出现如图2所示的登陆对话框,单击OK按钮即可;
图2
3、选择合适的命令空间(这里选择常用的rootcimv2),然后单击OK按钮,如图3所示;
图3
4、直接双击右侧类名,或者单击上部的望远镜按钮,在弹出的查找对话窗中输入你要查找的完整类名或者类名的一部分,单击Go按钮查找;并在查找结果中选择你要查看的类名,单击OK按钮,如图4所示;
图4
5、单击右上部倒数第4个实例按钮,即可得到本机所有安装的软件列表,如图5所示;
图5
任何WMI类以及实例的查看均可参考以上步骤。
WMI CIM Studio在开始菜单里单击它,你会发现它是以网页形式在IE浏览器中打开的。
WMI Object Browser主要处理类的实例.WMI CIM Studio可以访问类以及它们的实例.
当启动应用程序时,在所连接的名字空间中默认显示类的层次结构(图3-12)
图3-12 WMI CIM Studio的默认初始视图显示了rootCIMV2名字空间的类层次结构
(1)处理类
接口包括类导航器(左帧)和类浏览器(右帧).在类导航器中选择的类的详细信息出现在类浏览器中.
左帧中类的图标:
与它们有关联的常规(一个立方体)或联合(带有双箭头的正方形),具体(灰色背景)或抽象(白色背景),
或它们是否为带有具体子类的抽象子类([浅]灰色背景?).
类的列表是按字母顺序进行排序的,因此它从系统类(带有前导的双下划线)开始.
可能通过WMI CIM Studio查找,修改或删除现在的类,以及创建新的类(然而这没有应用到系统类).
当在类导航器中选择一个类时,它的属性,方法和联合的列表出现在类浏览器中.
可以点击工具栏最右边的问号图标,找出有关它们的更多信息.
(2)处理实例
WMI CIM Studio也允许在实例上执行各种操作.
可以通过点击导航器帧中的搜索(?双箭头?)图标并输入类名进行查找.
图3-13 使用WMI CIM Studio列出rootCIMV2名字空间中_Win32Provider系统类的所实例.
图3-14 使用WMI CIM Studio列出Win32_OperstingSystem类的属性
可以通过点击类浏览器帧中右边第4个图标(Instances)来列出它的所有实例.
将列出前面在WMI对象浏览中看到的相同实例.
(3)运行WQL查询
WMI CIM Studio中可用的一个附加特性是能够对连接的名字空间进行WQL查询.(点击类浏览器帧中右边第二个图标)
(4)向导
CIM 包含下面的向导:
*提供程序代码生成向导---生成一组由动态实例和方法提供程序开发者使用的文件.这些提供程序在CIM存储库外可以根据需要供给类.
*MOF生成向导---从存储库中输出类定义(或它们的实例)到MOF文件中.这一般用于在计算机间移植现在的类或实例.
输出MOF文件后,可以使用MOF编译器向导或mofcomp.exe工具再输入到另一台计算机的存储库中.
*MOF编译向导---从MOF文件中输入类定义(或它们的属性)到存储库中.这牵涉到在计算机间移植现存类或实例的过程的第二部分.
它也用于检验MOF文件的语法或把它转换成二进制格式.
提示: WMI SDK自定义视图可以在CIM Studio中使用.
WMI 事件注册工具:
WMI事件注册工具用于创建,查看和修改事件事件相关类的实例(比如用户,过滤器和计时器)以及在过滤器和用户间创建绑定.
WMI事件注册工具的接口分成两帧.
左帧显示了所有事件相关类,他们分组成3个独立的树层次结构---用户,过滤器和定时器.
每层可以从帧的左上解的一个列表框中选择.
右帧显示了用户和过滤器之间的绑定(在左窗格中选择一个过滤器或一个用户后).[最初不会出现绑定]
用户是作为__EventViewerConsumer类(__EventConsumer类的子类)的实例创建的,
过滤器是__EventFilter类的实例,计时器是__TimerInstruction类的实例.
图3-15 WMI事件注册显示了一系列__EventFilter类的实例(左边)和一系列EventViewerConsumer类的实例(右边)
因为事件注册工具把用户作为EventViewerConsumer类的实例创建,因此它们是作为永久用户实例的.这些实例是逻辑用户.
有关它们预订事件的通知将通过WMI事件浏览器应用程序来显示.这个应用程序将用作物理用户.
其他类型的永久用户: SMTPEventConsumer和ActiveScriptEventConsumer.
第一个用户允许发送基于SMTP的通知.第二个用户可用于响应事件的脚本.
使用事件注册工具,配置两种类型的事件的处理:
*内部事件,通过CIM存储库中的变更来产生.
要监视的类型将由__EventFiltter类的一个实例指定(条件由WQL设定).过滤器会在注册阶段链接到逻辑消息者.
*计时器事件,在特定的时间内调用一次或重复调用(基于时间间隔).
绝对时间或间隔值是使用__TimerInstruction类的实例的属性来设置的.
计时器的变更将通过__EventFilter类的实例来侦测(使用WQL语句设置的规则).
相应地,这个过滤器将链接到注册过程的逻辑用户.
(1)配置使用永久EventViewerConsumer注册的内部事件
将为内部事件设置一个永久用户.每次机服务在目标计算机上停止时,在WMI事件浏览器应用程序中将出现通知.
设置一个过滤对象:
需要开始创建__EventFilter类的实例和指定它的属性.一个新的实例可以通过如下方法完成:
显示WMI事件注册工具左帧中的过滤器列表,然后从__EventFilter文件夹的弹出菜单中选择新建实例选项.
Name属性是键,它定义了实例,因此需要保证它是唯一的.如果没有指定它,将自动生成.
QueryLanguage为WQL;Query属性为WQL语句.
图3-16 使用WMI事件注册工具设置_EventFilter类实例的Query值.
"SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA "Win32_Service"
AND TargetInstance.State="Stopped"
AND TargetInstance.Name="Spooler"
AND PreviousInstance.State<>TargetInstance.State"
用户事件通知的类型与这个查询有关.
当设置属性时,生成了__EventFilter类的实例.(如图3-18)
图3-18 显示在WMI事件注册窗口中的_EventFilter实例
内部事件是通过CIM存储库的变更来反映的.CIM对象管理器可以通过监测9个系统类的新实例创建来侦测这些变更.
ISA运算符是同对象数据类型的属性一起使用的.它表示属性是一个对象.
在例子中,类型属性名字是TargetInstance(_InstanceModificationEvent类的一个属性).
ISA运算符可以确定这个属性表示的类(包括它的任何父类).
查找TargetInstace属性为Win32_Service类的一个对象的_InstanceModificationEvent类实例.(图3-19)
图3-19 使用WMI CIM Studio浏览_InstanceModificationEvent的TargetInstance属性
WITHIN参数设置了时间间隔,它确定了WMI查询变更的频率.这影响了生成的变更发生变化后速度有多快.
注意TargetInstance属性和它的类型(对象).这是被修改对象的一个占位符(比如终止的一个Windows服务).
当提供程序或WMI侦测到这种变化时,会创建_InstanceModificationEvent的一个实例.TargetInstance的值将被指出对象所属的类.
所以在本例中,Name属性为Spooler,State属性为Stopped.
设置一个用户对象:
在前一个步骤中创建了过滤器,确定了哪些事件通知应该发送给一个用户.
现在创建用户类的一个实例(逻辑用户).通过选择事件注册工具左上角列表框的用户来开始.
图3-20 使用WMI事件注册显示一系列EventViewConsumer实例.
从弹出菜单中选择的选项或点击左边的第二个图标(左上角带有一个黄色星号点正方开).
键入如下属性的值:
Name:Stop_Spooler_EventConsumer
Description:Spooler Service Stopped
Severity:1
[还可以指定MachineName属性,它是想接收通知的计算机的名字(如果与本地机器不一样的话)]
点击OK,以创建EventViewerConsumer类的实例.(图3-21)
图3-21 使用WMI事件注册工具创建EventViewerConsumer类的一个实例
将用户绑定到过滤器
绑定可以在相同的窗口中实施,操作方法如下:
选择恰当的_EventFilter类实例,点击右边的第二个图标,显示检查标记,注册按钮(在监视器中它以绿色出现),如图3-22.
图3-22使用WMI事件注册工具,随__EventFilter类的实例一起注册EventViewerConsumer类的实例
现在,如果终止Spooler服务,WMI事件浏览器将在5秒内出现,并给出适当的通知.
通知包含时间,源计算机和创建逻辑用户时键入的说明信息.如图3-23.当每次Spooler服务状态改变为终止时都将显示此消息.
图3-23 WMI事件浏览器显示了Spooler服务终止的通知
(2)配置使用永久EventViewerConsumer注册的计时器事件
前面的事件作为响应一个系统事件出现.如果想在特定的日期和时间或以规则的时间间隔下生成通知,可以使用计时器事件.
下面的步骤可用于创建带有WMI事件注册工具的计时事件通知:
设置一个计时对象:
__EventTimer类的两个子类可以从WMI事件注册实用程序中取得:
*__AbsoluteTimerInstruction---在特定的日期和时间生成一个事件.
*__IntervalTimerInstruction---在特定的时间间隔生成一个事件(以毫秒表示).
在两种情形下,一开始就需要选择WMI事件注册实用程序左上角的列表框的计时器.
然后可以通过使用弹出菜单或点击左边的第二个图标,创建每个计时器的实例.
当创建__AbsoluteTimerInstruction的一个实例时,需要提供如下的参数:
*TimerID---标识这个实例的一个字串,当设置过滤器时使用.它应该设为一个唯一值.
*SkipIfPassed---如果设为真值,在用户不可用的前提下生成一个事件.
在默认条件下,它设为假值,这意味着事件通知进行排除,当它变为可用时发送给一个用户.
*EventDateTime---生成事件时进行计时(只发生一次)
图3-24 使用WMI事件注册工具创建__AbsoluteTimerInstruction类的实例
当创建__IntervalTimerInstruction的一个实例时,唯一不同的是IntervalBetweenEvents参数,这个参数的值是以毫秒表示的.
图3-25 使用WMI事件注册工具创建__IntervalTimerInstruction类的实例
设置一个过滤对象:
设置一个过滤对象需要确定感兴趣的__TimerEvent类型(使用上面赋予的TimeId).这将采用WQL查询形式:
SELECT * FROM __TimerEvent WHERE TimerID = "AbsoluteTimer Example"
对于间隔计时器,这个WQL语句(图3-26)略有不同,只是因为TimerID值不同.
图3-26 WQL查询语句使用__EventFilter类的这个实例来确定用户将收到的计时事件
设置一个用户对象:
设置一个用户对象的步骤与前面使用的创建内部用户事件的步骤相同.
显而易见,它们名称和说明应该是不同的,且应该清楚地解释用户的目的.
severity级别为1.如图3-27
也可以把远程计算机指定为事件的接收者.
此时,请检查用于设置WMI对象的账户在远程计算机上是否有恰当的权限.而且还要保证两台计算机上的时钟同步.
图3-27 使用WMI事件注册工具创建EventViewerConsumer类的实例
将用户绑定到过滤器:
当把用户绑定到过滤器时,在左窗体帧选择恰当的用户,和在右帧中设置的过滤器,然后点击右边的第二个图标(注册按钮).
完成后,在指定的时间,通知将在WMI事件浏览器窗口中显示(如图3-29).
图3-29 WMI事件浏览器显示了有磁AbsoluteTimer事件的通知
上面的是一次通知.如果想让这个通知以有规律的间隔重复.使用__IntervalTimerInstruction的实例进行替代,
设置一个过滤器以监控所有带有恰当TimerID的__TimerEvents,最后使用逻辑用户注册过滤器.