Windows管理规范(Windows Management Instrumentation,缩写WMI)由一系列对Windows Driver Model的扩展组成,提供了一个操作系统的接口,仪表组件通过该接口提供信息和通知。WMI是微软对分布式管理工作组(DMTF)的基于Web的企业管理类(WBEM)和通用信息模型(CIM)标准的实现。
简介Windows管理工具(WMI)由一组扩展到的Windows驱动程序模型。WMI允许脚本语言(例如VBScript或Windows PowerShell)来本地或远程管理Microsoft Windows个人电脑和服务器。WMI预装在Windows 2000及更新版的微软操作系统中,它也可以手动下载以适用于Windows 95和Windows 98等Windows NT操作系统。
微软为WMI提供了一个称之为Windows Management Instrumentation Command-line(WMIC)的命令行界面。
目的WMI的目的是定义一系列独立于环境的专有规范,允许管理信息在管理应用程序之间共享。WMI规定了企业管理标准以及现有的适用于Windows的相关技术,例如桌面管理接口(DMI)和SNMP。WMI通过提供统一的模型来补充其他标准。该模型表示可以通过一种常用方式来访问受管环境的任何来源的管理数据。1
开发过程因为WMI使用CIM和提供者集合来抽取可管理的实体,所以提供者的开发意味着数个步骤。主要步骤可归纳如下:
创建可管理的实体模型
定义一个模型
实现该模型
创建WMI提供者
确定要实现的提供者类型
确定该提供者的托管模型
用ALT向导创建提供者模板
在该提供者中实现代码逻辑
使用WMI和该系统注册该提供者
测试该提供者
创建用户样本代码1
WMI提供者的重要性自从Windows NT 4.0SP4时代的第一个WMI实现发布(作为外部下载)以来,微软一直在向Windows添加WMI提供者:
在Windows NT 4.0上,安装WMI后,微软提供了大约15个可用的WMI提供者
在Windows 2000发布之时,微软已发布29个WMI提供者作为操作系统预装的一部分
在Windows Server 2003发布时,微软在平台上包含80多个WMI提供者
Windows Vista包含13个新的WMI提供者,总数量接近100个
Windows Server 2008包含更多提供者,例如用于IIS7、PowerShell和虚拟化的提供者
许多客户解读了提供者数量的增长,认为这表示着WMI已经成为微软Windows一项“无处不在”的管理层,即使微软从未明确承诺这点。
因为Windows中通过WMI管理数据的不断增加,信息技术系统管理领域的人员开始开发基于WMI的脚本和自动化程序。除了脚本需求外,大多数领先的管理软件(包括MOM、SCCM、ADS、HPOpenViewfor Windows(HPOV)、BMC Software、CA, Inc)都提供WMI功能,允许通过各种用户接口使用或提供WMI信息。这使得不能在WMI层面上编程的系统管理员和操作员无需编写脚本或程序,也能享受到WMI的优势,甚至无需了解它。2
特性对于愿意开发一个或多个WMI提供者的人来说,WMI提供了许多功能。这是最重要的优点:
自动化接口:
由于WMI随附了一套可供使用的自动化接口,所以WMI提供程序及其类集支持的所有管理功能都可获得免费的开箱即用的脚本支持。除了WMI类设计和提供者开发之外,Microsoft开发和测试团队不需要创建,验证和测试脚本模型,因为它已经从WMI提供。
.NET管理接口:
由于System.Management命名空间依赖于现有的COM/DCOM管道,所创建的WMI提供商和其组WMI类变为自动提供给独立地使用的语言的所有.NET应用程序(例如C#,VB.NET)。除了WMI类设计和提供程序开发之外,Microsoft开发和测试团队不需要创建,验证和测试新程序集以支持.NET Framework中的新名称空间,因为WMI已经提供了此支持。自由。
C / C ++ COM / DCOM编程接口:
与Windows中的大多数组件一样,COM / DCOM编程人员可以利用在COM / DCOM接口级别开发的提供程序的功能。像以前的环境(脚本和.NET框架),COM / DCOM使用者只需要与标准的WMI COM接口集合进行交互,以利用WMI提供者功能及其支持的一组WMI类。为了使所有管理信息都可以从本地API获得,WMI提供者开发人员只需要与一组预定义的WMI COM接口进行交互。这将使管理信息自动在WMI COM级别上可用。而且,脚本COM接口对象模型与COM / DCOM接口对象模型非常相似,这使得开发人员很容易熟悉脚本体验。
远程访问的支持通过DCOM和SOAP:
更不是简单地提供本地COM能力,管理是所有关于远程,WMI提供DCOM运输。此外,通过由微软,英特尔,Sun Microsystems和戴尔领导的WS-Management计划,Windows Server 2003R2中将提供SOAP传输。此举措允许远程运行任何脚本,或者通过一组处理SOAP请求/响应的特定接口来使用WMI数据。WMI提供程序开发人员的优势在于,当他通过WMI,Windows远程管理公开所有功能时/ WS-Management也可以消耗这些信息(WMI实例中的嵌入对象在Windows Server 2003 R2中不受支持,但它是Vista的目标)。所有分层到WS-Management以及CIM数据模型到SOAP的映射都可以从WMI / WS-Management解决方案中免费获得。在必须使用DCOM的情况下,实现DCOM需要在每个客户端机器上部署代理DLL。由于Windows 2000以后的Windows操作系统中都提供了WMI,所以这些问题都被消除了。
支持查询:
WMI为开箱即用的WQL查询提供支持。这意味着如果提供程序不是为了支持查询而设计的,WMI通过使用提供程序之外的枚举技术来支持它。
事件处理功能:
WMI提供了通知用户任何感兴趣的事件的功能。WMI使用WMI查询语言(WQL)来提交WQL事件查询并定义要返回的事件的类型。具有所有相关回调的事件机制是WMI COM / DCOM和自动化接口的一部分。任何编写WMI提供者的人都可以免费为他的客户提供这种功能。由消费者决定如何使用WMI提供者及其相关的WMI类所公开的管理信息。
代码模板生成器:
为了加快编写包括所有COM / DCOM接口和相关定义的WMI提供程序的过程,WMI团队开发了WMI ATL向导来生成实现提供程序的代码模板。生成的代码基于最初由开发人员设计的WMI类模型。WMI提供程序开发人员将能够将WMI提供程序的预定义COM / DCOM接口与其本机API的一组接口进行接口,以检索要公开的管理信息。练习包括填充提供者代码中的“空白”以创建所需的接口逻辑。
可预测性:
可预测性是IT专业人员关注的一个重要问题,因为它定义了具有管理Windows组件的一组界面的人员的能力,可以直观地将这些知识直接应用于其他可管理的Windows组件,而无需重新学习一切向上。客户的可预测性是一个真正的收益,因为它增加了投资回报(ROI)。面对这样一种情况的人,根据以前的经验,只是希望事情能以同样的方式工作。COM编程/脚本接口的不断增加对可预测性有着巨大的影响,因为这使得客户很难自动化,管理Windows并利用其现有的知识。带有CIM的WMI通过始终公开相同的编程对象模型(COM / DCOM,Automation,.NET)来解决这个问题,而不管可管理实体是什么。
保护现有的客户投资:
保护客户和合作伙伴的投资激励客户投资于技术。由于微软过去几年来在编写WMI提供程序方面投入了大量资金,客户和合作伙伴投资了利用Windows的WMI功能的工具。因此,他们自然会继续利用这些功能,而不必为每个Windows可管理组件使用一组新的特定接口。一组特定的接口意味着拥有一组特定的代理或基于新模型或内部开发的软件,尤其是专用于组件或技术的接口。通过充分利用WMI的功能,客户和合作伙伴可以利用过去的工作投资,同时最大限度地降低开发成本,学习曲线和新发现。
提供一个合乎逻辑和统一的管理模式:
正如前面简要介绍的那样,该模型基于由DMTF(http://www.dmtf.org)定义的称为CIM的行业标准。CIM基于类的模式由一个满足行业要求的构造者和软件开发者组成。这意味着,不仅Microsoft利用WMI功能,而且任何其他第三方构造函数或开发人员编写自己的代码,以适应模型。例如,英特尔正在为他们的一些网络驱动适配器和软件这样做。惠普正在利用现有的WMI提供商,并在他们的HP Open View企业管理软件中实施自己的WMI提供商。IBM从Tivoli中消耗WMI管理套件,MOM和SMS也在消费和提供WMI信息。最后,Windows XP SP2利用WMI从反病毒软件和防火墙获取信息状态。3
本词条内容贡献者为:
李岳阳 - 副教授 - 江南大学