logo资料库

WMI入门教程.doc

第1页 / 共185页
第2页 / 共185页
第3页 / 共185页
第4页 / 共185页
第5页 / 共185页
第6页 / 共185页
第7页 / 共185页
第8页 / 共185页
资料共185页,剩余部分请下载后查看
WMI 脚本入门:第一部分
本页内容
什么是 WMI?
快速启动到 WMI 脚本
步骤 1:连接到 WMI 服务
步骤 2:检索 WMI 托管资源的实例
步骤 3:显示 WMI 托管资源的属性
WMI 体系结构
托管资源
WMI 基础结构
WMI 提供程序
CIMOM
CIM 储存库
WMI 脚本库
WMI 使用者
浏览 CIM
WMI 测试器 (wbemtest.exe) 演练
就到这里吧
WMI 脚本入门:第二部分
管理蓝图
命名空间定义
命名空间使用
管理脚本的默认命名空间
列出命名空间
定义类的分类
系统类
核心和公共类
扩展类
列出类
CIM 类类型定义
抽象类
静态类
动态类
关联类
剖析类
属性
方法
限定符
类限定符
属性限定符
方法限定符
比较类与托管资源
检索类定义
使用 SWbemObject Properties_、Methods_ 和 Qualifiers_
使用 SWbemObject GetObjectText_
使用 SWbemObjectEx GetText_
就到这里吧
补充脚本
WMI 脚本入门:第三部分
本页内容
WMI 脚本库定义
WMI 脚本库对象模型
解释 WMI 脚本库对象模型
关于变量命名惯例的三言两语
Scripting Guys 的 WMI 脚本模板指南
检索托管资源实例
显示托管资源属性
修改托管资源的属性
调用托管资源方法
创建托管资源的一个新实例
删除托管资源实例
订阅事件
就到这里吧
WMI Scripting Primer: Part 1
What Is WMI?
Quick Start to WMI Scripting
Step One: Connecting to the WMI Service
Step Two: Retrieve Instances of WMI managed Resour
Step Three: Display Properties of WMI managed Reso
WMI Architecture
Managed Resources
WMI Infrastructure
WMI Providers
CIMOM
CIM Repository
WMI Scripting Library
WMI Consumers
Exploring the CIM
WMI Tester (wbemtest.exe) Walkthrough
All for Now
WMI Scripting Primer: Part 2
Blueprint for Management
Namespaces Defined
Namespace Usage
Managing the Default Namespace for Scripting
Listing Namespaces
Class Categories Defined
System Classes
Core and Common Classes
Extension Classes
Listing Classes
CIM Class Types Defined
Abstract Classes
Static Classes
Dynamic Classes
Association Classes
Dissecting a Class
Properties
Methods
Qualifiers
Class Qualifiers
Property Qualifiers
Method Qualifiers
Comparing Classes to Managed Resources
Retrieving Class Definitions
Using SWbemObject Properties_, Methods_, and Quali
Using SWbemObject GetObjectText_
Using SWbemObjectEx GetText_
All for Now
Supplementary Scripts
WMI Scripting Primer: Part 3
WMI Scripting Library Defined
WMI Scripting Library Object Model
Interpreting the WMI Scripting Library Object Mode
A Paragraph or Two About Variable Naming Conventio
The Scripting Guys Guide to WMI Script Templates
Retrieving Instances of a Managed Resource
Displaying the Properties of a Managed Resource
Modifying the Properties of a Managed Resource
Calling a Method of a Managed Resource
Creating a New Instance of a Managed Resource
Deleting an Instance of a Managed Resource
Subscribing to Events
All for Now
A Brief Introduction to WMI Events
WMI and .NET: System.Management Lets You Take Adva
WMI and .NET
System.Management Lets You Take Advantage of WMI A
Why WMI?
Writing WMI Client Code with .NET
ATL Wizards
System.Management.Instrumentation
WMI Extensions for Visual Studio .NET Server Explo
Strongly Typed Wrappers for WMI Classes
Management Events
Building Event Queries
Conclusion
WMI 脚本入门:第一部分 发布日期 : 09/03/2004 | 更新日期 : 09/03/2004 Greg Stemp、Dean Tsaltas 和 Bob Wells Microsoft Corporation Ethan Wilansky 网络设计小组 摘要:Scripting Guys 的第一个 Scripting Clinic 专栏展示了如何使用 WMI 脚本库创建大量有用的 Windows 系统管理脚本。 本页内容 什么是 WMI? 快速启动到 WMI 脚本 WMI 体系结构 托管资源 WMI 基础结构 浏览 CIM 就到这里吧 Microsoft®Windows®Management Instrumentation (WMI) 大概是我们已知的 Microsoft 保存最好 的秘密。尽管如此,但毫无疑问,WMI 是 Microsoft 主要的针对 Windows 的管理支持技术。这对您 来说意味着什么呢?那么,如果您管理 Windows 服务器和工作站,或者如果您创建 Windows 管理应 用程序,您就需要了解 WMI。本文是教授您 WMI,更确切地说,是教您如何使用 WMI 脚本库来创 建大批 Windows 系统管理脚本的系列文章中的第一篇。 在开始之前,我们应该用一点时间来感谢 Andrew Clinick,他让我们有机会来传承 Scripting Clinic。可 以说,当 Andrew 在其最近的专栏中说他计划移交更多内容的时候,他并不是在开玩笑!事实上, Andrew 正在转移到另一个项目,因此他客气地请我们从他停止的地方继续。除了开始时由于 Andrew 为 Scripting Clinic 建立了很高的质量水准而感到有点勉强之外,我们很高兴接手这一工作。 那么,我们是谁呢?我们是 Scripting Guys,是编写 System Administration Scripting Guide 一书的小组, 这本书作为 Microsoft® Windows Server 2003 资源工具箱附带的一部分。在专栏的大头照中,左面是 Dean,右面是 Greg。有传言说 Ethan 和 Bob 由于去做每周一次的肉毒杆菌除皱而错过了拍照。所以,
如果以后在网上看到他们的照片时,发现他们俩看起来非常英俊,我们在这儿要先告诉您,Ethan 和 Bob 真的是我们见过的最笨得令人讨厌的家伙!记得要注意啊。 什么是 WMI? WMI 最初于 1998 年作为一个附加组件与 Windows NT 4.0 Service Pack 4 一起发行,是内置在 Windows 2000、Windows XP 和 Windows Server 2003 系列操作系统中核心的管理支持技术。基于由 Distributed Management Task Force (DMTF) 所监督的业界标准,WMI 是一种规范和基础结构,通过 它可以访问、配置、管理和监视所有的 — 几乎所有的 Windows 资源。 要掌握 WMI 的强大功能和范围,需要考虑以前(或者现在)如何管理并监视 Windows 工作站和服务 器。您可能用过或仍在使用众多的图形化管理工具来管理 Windows 资源 — 例如磁盘、事件日志、文 件、文件夹、文件系统、网络组件、操作系统设置、性能数据、打印机、进程、注册表设置、安全性、 服务、共享、用户、组等等。 尽管图形化工具提供了一种功能管理解决方案,它们所共有的东西是什么呢?一种答案是,在 WMI 之 前,所有的 Windows 图形化管理工具都依赖于 Win32 应用程序编程接口(Application Programming Interfaces,APIs)来访问和管理 Windows 资源。为什么?因为在 WMI 之前,能够以编程方式访问 Windows 资源的惟一方法就是通过 Win32 API。这种情况使 Windows 系统管理员无法通过一种简便 的方法利用常见的脚本语言来自动化常用的系统管理任务,因为大多数脚本语言都不能直接调用 Win32 API。通过提供一致的模型和框架,WMI 改变了这种情况 — 通过模型和框架,所有的 Windows 资源均被描述并公开给外界。最好的一点是,系统管理员可以使用 WMI 脚本库创建系统管理脚本,从 而管理任何通过 WMI 公开的 Windows 资源! 使用 Windows Script Host 和 Microsoft Visual Basic Scripting Edition (VBScript),或任何支持 COM 自动化的脚本语言(例如,ActiveState Corporation 的 ActivePerl),可以编写脚本来管理和自动化企 业系统、应用程序和网络的下列方面:    Windows Server 2003 、 Windows XP 专业版和 Windows 2000 系统管理。您可以编写 脚本来检索性能数据,管理事件日志、文件系统、打印机、进程、注册表设置、计划程序、安全 性、服务、共享以及很多其他的操作系统组件和配置设置。 网络管理。您可以创建基于 WMI 的脚本来管理网络服务,例如 DNS、DHCP 和启用 SNMP 的 设备。 实时健全监视。使用 WMI 事件订阅,您可以编写代码以在事件发生时监视并响应事件日志项, 监视并响应文件系统、注册表修改及其他实时的操作系统更改。基本上对 WMI 来说,WMI 事 件订阅和通知是在 SNMP 环境中 SNMP 陷阱是什么。
 Windows .NET 企业服务器管理。您可以编写脚本来管理 Microsoft Application Center、 Operations Manager、Systems Management Server、Internet Information Server、Exchange Server 和 SQL Server。 返回页首 快速启动到 WMI 脚本 为了让您对 WMI 脚本是什么有一些概念,让我们来看看一个表面看来不怎么重要的任务 — 检索安装 在基于 Windows 的远程计算机中的物理内存的总量。在 WMI 之前,如果没有另外的第三方工具,是 不能通过一个脚本来轻松完成这个任务的。实际上,在 WMI 之前,使用包括操作系统工具的工具确定 安装在计算机中内存数量的惟一方法是通过系统属性对话框。今天,如果目标计算机上安装了 WMI, 并且有计算机的管理员访问权限,您就可以使用一个 WMI 脚本来检索在远程 Windows 计算机上安装 的物理内存量,如清单 1 中所示的一样简单。 清单 1 :使用 WMI 和 VBScript 检索总物理内存 strComputer = "atl-dc-01" Set wbemServices = Getobject("winmgmts:\\" & strComputer) Set wbemObjectSet = wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration") For Each wbemObject In wbemObjectSet WScript.Echo "Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemory Next 要运行清单 1 中的示例脚本,将其复制并粘贴到您最常用的文本编辑器中(notepad.exe 也可以), 将分配给 strComputer 变量的值更改为域中一个有效的启用 WMI 的计算机,保存脚本(扩展名 为 .vbs),并如图 1 所示运行脚本。
图 1 : GetMemory.vbs 输出 有点不可思议,无须任何录入,您应该会看到目标计算机的物理内存量回显到控制台。 现在,在你说“天哪!真的用六行脚本来检索一台计算机中的内存数量?”之前,让我们先礼貌地插几句 话,因为至今尚不明显的是,您可以使用与在清单 1 中所演示的相同的基本步骤,从任何通过 WMI 公 开的 Windows 资源检索配置和状态信息。 假设您想要检索安装在一台远程计算机上的所有服务的名称、状态和启动类型。清单 2 中的示例脚本 完全使用清单 1 中使用过的相同的基本步骤来完成。 清单 2 :使用 WMI 和 VBScript 检索服务信息 strComputer = "atl-dc-01" Set wbemServices = Getobject("winmgmts:\\" & strComputer) Set wbemObjectSet = wbemServices.InstancesOf("Win32_Service") For Each wbemObject In wbemObjectSet WScript.Echo "Display Name: " & wbemObject.DisplayName & vbCrLf & _ " " State: Start Mode: " & wbemObject.StartMode " & wbemObject.State & vbCrLf & _ Next 运行清单 2 生成如图 2 中所示的输出。
图 2 : GetServices.vbs 输出 假设您对服务不感兴趣,但是需要从 Windows 事件日志检索记录。再次使用清单 1 中的脚本模板, 您可以很容易地读取 Windows 事件日志,如清单 3 中所演示。在您运行清单 3 之前我们要指出的是, 如果您的事件日志包含数千个记录,示例脚本可能需要用很长的时间运行。 清单 3 :读取 Windows 事件日志记录 strComputer = "atl-dc-01" Set wbemServices = Getobject("winmgmts:\\" & strComputer) Set wbemObjectSet = wbemServices.InstancesOf("Win32_NTLogEvent") For Each wbemObject In wbemObjectSet WScript.Echo "Log File: " & wbemObject.LogFile & vbCrLf & _ _ "Record Number: " & wbemObject.RecordNumber & vbCrLf &
"Type: & vbCrLf & _ "Time Generated: " & wbemObject.TimeGenerated & vbCrLf & " & wbemObject.Type "Source: & vbCrLf & _ "Category: & vbCrLf & _ "Category String: " & wbemObject.CategoryString & vbCrLf & " & wbemObject.SourceName " & wbemObject.Category "Event: "User: "Computer: "Message: " & wbemObject.EventCode " & wbemObject.User " & wbemObject.ComputerName " & wbemObject.Message & vbCrLf & _ & vbCrLf & _ & vbCrLf & _ & vbCrLf _ _ Next 如果我们仔细检查清单 1、2 和 3,我们会得出关于这三个脚本的两个非常重要的观察结果。第一个观 察结果是,所有三个脚本都执行相同的三个步骤:脚本连接到 WMI,检索一个 WMI 托管资源,并回 显资源的几个属性。第二个重要的观察结果是,在每个脚本中,惟一的更改是标识目标资源的类名(即 分别为 Win32_LogicalMemoryConfiguration、Win32_Service 和 Win32_NTLogEvent),以及资 源的相应属性。 脚本中使用的三个步骤,对于任何用于检索 WMI 托管资源信息的 WMI 脚本来说是共同的。让我们稍 详细一些地看一下每个步骤。 步骤 1:连接到 WMI 服务 在任何 WMI 脚本中,第一个步骤都是建立一个到目标计算机上的 Windows 管理服务的连接。连接到 在本地或远程计算机上的 WMI 与调用 VBScript 的 Getobject 函数并将 WMI 脚本库的名字对象的 名称(即“winmgmts:”,后跟目标计算机的名称)传递到 Getobject 一样简单。 用这种方法连接到 WMI,返回一个对 SWbemServices 对象的引用,我们使用清单 1、2、3 中的名 为 wbemServices 的变量来引用该对象。SWbemServices 是在 WMI 脚本库中定义的一打左右的对象 中的一个。WMI 脚本库提供一组用于访问 WMI 基础结构的通用对象脚本。一旦有一个对 SWbemServices 对象的引用,您就可以调用任何提供了 SWbemServices 的方法;InstancesOf 就 是此种方法中的一个。 步骤 2:检索 WMI 托管资源的实例 普遍认为,第二个步骤主要取决于要执行的任务。在检索 WMI 托管资源的信息中,步骤 2 与调用 SWbemServices 对象的 InstancesOf 方法一样简单。正如方法名所示,InstancesOf 返回由资源的
类名标识的托管资源的所有实例。InstancesOf 以一个 SWbemObjectSet 集合的形式返回所需的资 源,通过使用名为 wbemObjectSet 的变量我们在清单 1、2、3 中引用它。SWbemObjectSet 是 WMI 脚本库中定义的另一个脚本对象。 步骤 3:显示 WMI 托管资源的属性 最后一个步骤是枚举 SWbemObjectSet 集合的内容。SWbemObjectSet 中的每个项都是一个 SWbemObject(WMI 脚本库中的另外一个对象) — 表示所需资源的一个单个实例。使用 SWbemObject 来访问托管资源类定义中定义的方法和属性。 那么,如果从 WMI 检索信息的脚本编写步骤都是相同的,Win32_LogicalMemoryConfiguration、 Win32_Service 和 Win32_NTLogEvent 类是什么呢?此外,它们来自哪里?哪些其他的类是可用 的?还有,如何使用它们?这些问题的答案分散在构成 WMI 体系结构的各组件中。让我们来看一下。 返回页首 WMI 体系结构 WMI 体系结构由三个主层组成,如图 3 所示:    托管资源 WMI 基础结构 使用者
图 3 : WMI 体系结构 我们将从最低层开始,因为资源是驻留在那里的。 返回页首 托管资源 托管资源是任意逻辑或物理组件,通过使用 WMI 进行公开和管理。可以使用 WMI 管理的 Windows 资源包括:计算机系统、磁盘、外围设备、事件日志、文件、文件夹、文件系统、网络组件、操作系统 子系统、性能计数器、打印机、进程、注册表设置、安全性、服务、共享、SAM 用户和组、Active Directory、 Windows 安装程序、Windows 驱动程序模式 (WDM) 设备驱动程序,以及 SNMP 管理信息基 (MIB) 数据等。WMI 托管资源通过一个提供程序与 WMI 通讯。当开始编写脚本来与 WMI 托管资源交互时, 您经常会看到一个术语实例,它被用于引用在运行中的脚本中的托管资源的虚拟表示形式。 返回页首 WMI 基础结构
分享到:
收藏