vbs脚本
运行 cscript 1.vbs
托管资源
WMI基础结构
使用者
托管资源
托管资源是任意逻辑或物理组件,通过使用 WMI 进行公开和管理。可以使用 WMI 管理的 Windows 资源包括:计算机系统、磁盘、外围设备、事件日志、文件、文件夹、文件系统、网络组件、操作系统子系统、性能计数器、打印机、进程、注册表设置、安全性、服务、共享、SAM 用户和组、Active Directory、Windows 安装程序、Windows 驱动程序模式 (WDM) 设备驱动程序,以及 SNMP 管理信息基 (MIB) 数据等。WMI 托管资源通过一个提供程序与 WMI 通讯。当开始编写脚本来与 WMI 托管资源交互时,您经常会看到一个术语实例,它被用于引用在运行中的脚本中的托管资源的虚拟表示形式。
WMI 基础结构
中间层是 WMI 基础结构。WMI 由三个主要组件构成:公共信息模型对象管理器(Common Information Model Object Manager,CIMOM)、公共信息模型(Common Information Model,CIM)储存库,以及提供程序。这三个 WMI 组件共同提供通过其定义、公开、访问和检索配置和管理数据的基础结构。虽然小,但是对编写脚本来说绝对不可或缺的第四个组件是 WMI 脚本库。
WMI 提供程序
WMI 提供程序在 WMI 和托管资源之间扮演着中间方的角色。提供程序代表使用者应用程序和脚本从 WMI 托管资源请求信息,并发送指令到 WMI 托管资源。例如,清单 1 和清单 2 使用内置 Win32 提供程序来检索内存和服务相关信息。清单 3 使用内置的事件日志提供程序来从 Windows 事件日志检索记录。
通过将托管资源公开给基于 WMI 标准的、统一访问模型的 WMI 基础结构,提供程序隐藏托管资源独有的实现详细信息。WMI 提供程序使用托管资源本机 API 与其相应的托管资源通讯,使用 WMI 编程接口与 CIMOM 通讯。例如,内置的事件日志提供程序调用 Win32 事件日志 API 来访问事件日志。
基于 WMI 的可扩展体系结构,软件开发人员可以开发并集成附加提供程序来公开其产品特有的管理函数。监视 Exchange 连接器状态的 Exchange Server 2000 提供程序就是一个这样的示例。同样,Application Center、Operations Manager、Systems Management Server、Internet Information Server 和 SQL Server 都包含 WMI 提供程序。
提供程序通常作为驻留在 %SystemRoot%/system32/wbem 目录中的动态链接库 (DLL) 实现。WMI 包括很多针对Windows 2000、Windows XP 以及 Windows Server 2003 系列操作系统的内置提供程序。内置提供程序(也被称为标准提供程序),从已知的操作系统源(如 Win32 子系统、事件日志、性能计数器、注册表等)提供数据和管理函数。表 1 中列出一些包含在 Windows 2000、Windows XP 和 Windows Server 2003 系列操作系统中的 WMI 提供程序。
提供注册。WMI 利用 CIMOM 提供注册位置和功能信息。此信息存储在 CIM 储存库中。
请求传送。CIMOM 使用提供程序注册信息,将使用者请求传送到合适的提供程序。
远程访问。使用者通过连接到远程系统上的 CIMOM 访问启用 WMI 的远程系统。一旦连接建立,使用者可以执行与在本地可以执行的操作相同的操作。
安全性。在本地计算机或是远程计算机上,允许用户在连接到 WMI 之前通过验证每个用户的访问标记,CIMOM 控制对 WMI 托管资源的访问。WMI 并不覆盖或阻止由操作系统提供的安全性。
查询处理。允许使用者使用 WMI 查询语言(WMI Query Language,WQL)发出关于任何 WMI 托管资源的查询。例如,您可以查询所有发生在过去 24 小时的,符合一个特定事件 ID 的事件的事件日志。CIMOM 只在提供程序本身不支持查询操作的情况下执行查询计算。
事件处理。允许使用者订阅表示对 WMI 托管资源更改的事件。例如,您可以订阅表明逻辑磁盘驱动器上的空间何时下降到可接受的阈值以下的事件。CICOM 按一个指定的间隔轮询托管资源,并在满足订阅条件时生成一个事件通知。
查看Windows类
命令行输入 wbemtest
然后点击连接到root\cimv2然后递归枚举类,查看所有类及方法。1
2
3
4
5
6strComputer = "HACK"
Set objWMIService = GetObject("winmgmts:\\" & strComputer)
Set colOperatingSystems = objWMIService.InstancesOf("Win32_OperatingSystem")
For Each objOperatingSystem In colOperatingSystems
WScript.Echo "Name:" & objOperatingSystem.Name
Next