Win2000自动化管理的实现( 二 )

【Win2000自动化管理的实现】现在,假设我们要在当前的机器上查找一个对象:C:驱动器 。我们不知道C:驱动器在CIM或WMI中的具体名称,浏览CIM Studio列出的数百个类又太麻烦,怎么办呢?可以使用Find按钮(左边上方的望远镜,参见图三) 。图二显示了点击Find按钮后显示的Search for Class对话框,在这里输入我们猜想C:驱动器的类名称中应当包含的单词,然后点击Go!按钮 。由于我们正在寻找一个命名的磁盘分区,而且我们知道Windows把这种分区叫做logical disk或logical drive,因此这里的搜索关键词可以是logical 。当然,搜索关键词也可以是disk,但这时会有大量的搜索结果出现 。

图二 图二显示了搜索关键词logical得到的结果 。选择Win32_LogicalDisk并点击OK,图三的窗口出现(为什么不选择CIM_LogicalDisk?前面已经提到,WMI管理的所有对象都带有Win32前缀 。如果选择CIM_LogicalDisk然后要求显示出它的实例,不可能看到可用逻辑驱动器的任何具体信息,只能看到对应每一个可用逻辑驱动器的Win32_LogicalDisk条目) 。现在,窗口的右边显示出Win32_logicalDisk类的属性 。可以看到,属性的值都为空,这是因为我们正在查看的是一个类,而不是类的具体实例 。要显示出Win32_LogicalDisk类的实例,点击右边上面的Instances按钮(右数第四) 。

图三 点击Instances按钮之后,窗口显示出当前机器上所有逻辑驱动器的实例,包括网络逻辑驱动器 。点击设备ID为“C:”的实例,显示出图四的结果 。右边窗格包含了当前实例的属性和方法,当前逻辑驱动器的名称显示在右边窗格的上方 。

图四 利用脚本可以修改这些属性或调用这些方法 。如果对某个属性的含义不太清楚,只需选择Win32_LogialDisk类或Win32_LogicalDisk.DeviceID="C:"实例,再点击Help按钮 。大多数对象的属性和方法都有详细的说明 。

CIM分三层 。第一层是核心模型(Core Model),这一层包含的类定义对于所有管理领域来说都是共同的 。第二层是公共模型(Common Model),这一层包含的类定义对于特定的管理领域来说是公共的,但与具体的操作系统和系统设计无关 。第三层是扩展模型(Extension model),这一层包含的类定义与特定的操作系统或技术有关 。WMI是Microsoft扩展CIM 2.0得到的面向Win32系统的扩展模型 。引用WMI类和属性的形式是“扩展前缀_类名称.属性名称”,例如Win32_ComputerSystem.Name,其中Win32是CIM模式cimv2名称空间内WMI扩展类的前缀,ComputerSystem是类,Name是属性 。编写WMI脚本的很大一部分工作涉及到读取和设置属性值 。当前,WMI提供的方法还很有限,但随着时间的推移,相信WMI和CIM提供的方法都会越来越丰富 。
四、脚本编程初步
前面我们通过SDK查看了Win32_LogicalDisk类和它的属性,下面来看看如何在脚本中访问这些信息 。如果你的系统上安装了Microsoft Windows 2000 Resource Kit,program filesresource kit文件夹下默认会有一个listfreespace.vbs脚本 。这个脚本查询Win32_LogicalDisk类的各个对象,分别提取一组属性值:DeviceID,即驱动器标识符;FreeSpace,驱动器空闲空间的字节数 。假设一台机器的A:是软盘驱动器,D:是CD-ROM驱动器,listfreespace.vbs的输出类如: A:not availableC:8,243,381,248bytesD:not available
下面显示了getfree.vbs脚本程序的代码,它用更少的代码获取类似的信息 。启动getfree.vbs时要指定驱动器标识符,getfree.vbs将显示出驱动器空闲空间和文件系统类型 。" 变量声明Dim driveArg, dObject, driveName" 创建文件系统对象,并将该对象赋值" 给dObject变量(drive object的缩写)Set dObject = CreateObject("Scripting.FileSystemObject")" 如果用户没有在命令行指定待查询的驱动器标识符," 则显示错误信息并停止运行脚本If Wscript.Arguments.Count

推荐阅读