当前位置:DOS资源站资料中心入门文章 → WMI和WMIC的关系

WMI和WMIC的关系

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2008-4-19 21:18:50

1.  WMI基础知识  
WMI 最初于1998年作为一个附加组件与 Windows NT 4.0 Service Pack 4 一起发行,是内置在Windows 2000、 Windows XP和Windows Server 2003 系列操作系统中核心的管理支持技术。基于由 Distributed Management Task Force (DMTF) 所监督的业界标准,WMI是一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源。大多用户习惯于使用众多的图形化管理工具来管理Windows资源,在WMI之前这些工具都是通过 Win32应用程序编程接口(Application ProgrammingInterfaces,API)来访问和管理Windows资源的。只要你熟悉系统编程你就知道API有多么重要。但是大多数脚本语言都不能直接调用Win32 API,WMI的出现使得系统管理员可以通过一种简便的方法即利用常见的脚本语言实现常用的系统管理任务。  
利用WMI需要和脚本如WSH和VBScript结合起来,可以实现的功能大家可以看微软的MSDN文档。  
在编写我们自己的脚本之前,我们需要对WMI的体系结构有个基本的了解。
在WMI 体系结构中我们最需要关心的就是WMI提供程序,WMI提供程序在WMI和托管资源之间扮演着中间方的角色。提供程序代表使用者应用程序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。下面是我们利用WMI编程经常要用到的WMI内置提供程序清单,以供编程参考。  
1.Active Directory提供程序  
链接库文件:dsprov.dll  
命名空间:root\directory\ldap  
作用:将Active Directory 对象映射到 WMI。  
2.事件日志提供程序  
链接库文件:ntevt.dll  
命名空间:root\cimv2  
作用:管理 Windows 事件日志,例如,读取、备份、清除、复制、删除、监视、重命名、压缩、解压缩和更改事件日志设置。  
3.注册表提供程序  
链接库文件:stdprov.dll  
命名空间:root\default  
作用:读取、写入、枚举、监视、创建、删除注册表项和值。  
4.Win32 提供程序  
链接库文件:cimwin32.dll  
命名空间:root\cimv2  
作用:提供关于计算机、磁盘、外围设备、文件、文件夹、文件系统网络组件、操作系统、打印机、进程、安全性、服务、共享、SAM 用户及组,以及更多资源的信息。  
5.Windows 安装程序提供程序  
链接库文件:msiprov.dll  
命名空间:root\cimv2  
作用:提供对已安装软件信息的访问。  
从上面可以看出在WMI中类(即内置提供程序)被分组到命名空间中,命名空间可以看成是一个组。比如,命名空间 root\cimv2 包括大部分表示通常与计算机和操作系统相关联的资源的类。在使用类的时候要说明类所在的命名空间。类由属性和方法构成。这是可视化编程中的两个重要的概念。属性描述的是对象的状态,方法是对象可以执行的操作。  

2.   WMIC和WMI的大概关系:
WMIC 具有可分析、解释和执行从命令行调用出来的别名操作的引擎。该引擎是一个可执行文件,名为 WMIC.exe,该文件在用户所连接到的计算机上运行。必须通过添加别名文件定义或注册,才能完成对 WMI 命令行解释程序等的扩展。

别名或友好的名称,是在管理对象格式 (MOF)(这是一种在 CIM 中用于定义类和实例的语言)中定义的,并与 WMI 架构中的类相关联。

WMIC.exe 引擎从其 stdin 界面接收命令。命令由该工具进行分析,而且如果它涉及别名,则将从当前 WMI 操作名称空间(默认情况下为 root\cli)中获取别名定义。该工具用别名命令和当前环境设置(如当前目标名称空间)解释原始命令。该命令将作为一系列针对目标名称空间的 WMI API 调用来执行。如果某一名称空间与正在处理的别名一致,则该名称空间可以用作目标名称空间。

从以上可以看出WMIC其实就是WMI的命令行实现,以前只能在vbs等脚本中管理WMI的资源,而现在有了WMIC,我们也能在命令行和bat中管理WMI的资源了。这是我的理解~~