问题 3:如果 WMI 向外界暴露特定的功能,我如何才能知道?
问题 4:如果 WMI 没有提供我想要的功能,我应该怎么办?
问题 6: 为什么我的脚本可以在某个版本的 Windows 上运行,但在另外一个版本的 Windows 上却不能运行?
Windows 管理规范(Windows Management Instrumentation)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。WMI 通过编程和脚本语言为日常管理提供了一条连续一致的途径。例如,用户可以:
• 在远程计算机器上启动一个进程。
• 设定一个在特定日期和时间运行的进程。
• 远程启动计算机。
• 获得本地或远程计算机的已安装程序列表。
• 查询本地或远程计算机的 Windows 事件日志。
WMI 中的“Instrumentation”特指 WMI 可以获得关于计算机内部状态的信息,这与汽车仪表盘获得并显示引擎的状态信息非常类似。WMI 对磁盘、进程、和其他 Windows 系统对象进行建模,从而实现“指示”功能。这些计算机系统对象采用类来建立模型,例如 Win32_LogicalDisk 或 Win32_Process; 如您所料,Win32_LogicalDisk 类用于建立在计算机上安装的逻辑磁盘的模型,Win32_Process 类用于建立正在计算机上运行的任何进程的模型。这些类基于一个名为通用信息模型(Common Information Model,CIM)的可扩展架构。CIM 架构是分布式管理任务组(Distributed Management Task Force)的一个公开标准( http://www.dmtf.org).
WMI 的功能还包括事件触发、远程调用、查询、查看、架构的用户扩展、指示等等。
WMI 适用于所有最新版本的 Windows。WMI 附带在 Windows Me、Windows 2000、Windows XP 和 Windows Server 2003 之中。
对于 Windows 98 和 Windows NT 4.0,可以访问http://www.microsoft.com/downloads. 并搜索“Windows Management Instrumentation (WMI) CORE 1.5 (Windows 95/98/NT 4.0)”。
注意:在 Windows NT 4.0 上安装并运行 WMI 之前,需要首先安装 Service Pack 4 或更高版本。
WMI 需要的其他软件包括:
1. Microsoft? Internet Explorer 5.0 或更高版本。
2. Windows Script Host(WSH)。Windows 2000、Windows XP、Windows Server 2003、和 Windows Me 附带的 WSH,而不是 Windows NT4 或 Windows 98 附带的 WSH。您可以从以下地址下载 WSH http://www.microsoft.com/downloads. WSH 的最新版本—— 包括在 Windows XP 和 Windows Server 2003 之中——是 WSH 5.6。
MSDN 是了解 WMI 及其功能的详细参考信息的最佳场所;请参考以下地址获取 WMI 参考信息:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_reference.asp. WMI 参考中包含了关于 WMI 标准安装中大多数类、对象和 API 的信息。注意:不属于操作系统一部分的 WMI 提供者可能会创建既没有记录在 MSDN,也没有记录在平台 SDK 中的类。
一旦熟悉了信息的分类方式,用户就可以方便地搜索自己想要的类,并确定自己想要的功能是否存在。 请注意:为了完成一个特定的任务,您可能需要使用多个类。例如,假定您想要获得一台计算机的基本系统信息。 尽管可以使用 Win32_OperatingSystem 类来获得可用内存的相关信息,但如果同时需要获得关于计算机可用磁盘的信息,您必须使用第二个类 Win32_LogicalDisk。请看问题为什么我的脚本可以在某个版本的 Windows 上运行,但在另外一个版本的 Windows 上却不能运行? 想要知道 WMI 可以做什么、不可以做什么?
CIM Studio 是一种工具,用户可以通过它浏览 Windows 2000 或更高版本平台上的 WMI 类。想要进一步了解这个工具,以及其中包含的内容(CIM Studio 中包含一系列由 WMITools.exe 安装的工具),请访问 http://www.microsoft.com 并搜索关键字“WMI tools”。您也可以运行微软不提供支持的 Wbemtest.exe 工具——安装 WMI 的时候自动被安装——来浏览 WMI 数据。
在 Windows XP 或 Windows Server 2003 上,用户可以使用以下脚本搜索类名中包含特定关键字的类。 请将该脚本保存为一个名为 Search.vbs 的文本文件然后运行,并指定想要搜索的关键字。例如,想要搜索名称中包含 “service”的类,
请在命令提示行运行以下命令:
| cscript search.vbs service |
' Script for finding a class in WMI Repository |
该脚本只能运行在 Windows XP 或 Server 2003 之上,因为作为 WMI 查询语言一部分的 LIKE 运算符只能用于这两个平台。
用户迟早会发现 WMI 无法完成有些自己想要的任务或者无法高效地完成。 在这种情况下,您应该首先检查操作系统提供的其他脚本技术是否可以提供该功能。 例如,ADSI(Active Directory Service Interfaces)可以帮助用户管理 Active Directory;CDO(Collaboration Data Objects)提供了在脚本中发送电子邮件的功能。如果 Windows 操作系统没有提供合适的脚本接口,也许某些第三方的软件可以提供您所需要的功能。
如果确实没有这样的脚本接口,理论上讲您可以编写一个 WMI 提供者来提供相应的功能。不过,不能用脚本语言来编写 WMI;而必需使用 C++ 或 C#。关于这方面的更多信息,请参阅 MSDN 的“Using WMI”(使用 WMI)部分,其中一些主题介绍了如何编写典型的 WMI 提供者。如果您想要使用 .NET Framework 来编写提供者,请在 MSDN 库中搜索“Managing Applications Using WMI”(使用 WMI 管理应用程序)。
Microsoft Developers Network(MSDN)和 TechNet 都是获得示例的好地方。以下是一些指向这些站点上的有用资源的链接:
• TechNet 脚本中心
包含数百个按照技术和管理任务分类的示例脚本。
http://go.microsoft.com/fwlink/?LinkId=24771.??
• MSDN
http://msdn.microsoft.com/library.
想要获得 WMI 脚本,请搜索“WMI System Administration scripts”(WMI 系统管理脚本)。
想要获得 WMIC(WMI 命令行工具),请访问:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmic.asp?.
• WMI 软件开发工具包(SDK)
想要获得按照类别划分的问题解决方案,请参阅“Using WMI > WMI Tasks for Scripts and Applications(针对脚本和应用程序的 WMI 任务)”。http://www.microsoft.com/msdownload/platformsdk/sdkupdate?
• Windows 2000 脚本编写指南(在线阅读)
本书的全部内容,其中包含很多 WMI 脚本示例。
http://www.microsoft.com/resources/documentation/windows/2000/server/scriptguide/en-us/default.mspx?
• TechNet 的“脚本故事” 栏目
内容包括有关脚本的初级和中级话题。
http://www.microsoft.com/technet/community/columns/scripts/default.mspx?
• MSDN 的“脚本诊所”栏目
更多的高级脚本话题。
http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28001169
• 新闻组
您可以在位于 Msnews.microsoft.com 新闻服务器上的以下新闻组中发布关于 WMI 和 WMI 应用或脚本的问题:
Microsoft.public.win32.programmer.wmi
Microsoft.public.windowsxp.wmi
Microsoft.public.windows.server.scripting
这个问题通常是由于新版本的 Windows 中引入了一些新的类、属性、或方法,但较早版本的操作系统没有包含它们。想要验证可用性,请在 MSDN 中查找 WMI 软件开发工具包(SDK)中每个类的“Requirements”(要求)部分(http://msdn.microsoft.com/library/default.asp). 例如,Win32_PingStatus 类的“要求”中指定该类需要 Windows XP 或 Windows Server 2003。所以试图在 Windows 2000 上访问 Win32_PingStatus 类的脚本将会导致“Class not found”(无法找到类)错误。
与此类似,一些 WMI 数据提供者,例如 SNMP Provider 要么在所有操作系统上不可用,要么不是 WMI 默认安装的一部分。关于这些提供者的 SDK 主题都包含指向 “About WMI”(关于 WMI )部分的“Operating System Availability of WMI Components”(WMI 组件的操作系统要求)主题的引用。
想要获得标准 WMI 提供者的列表,请参考“WMI Reference”(WMI 参考)下的“WMI Providers”(WMI 提供者)。
一般情况下,当一个新的提供者被添加到 Windows 的一个新版本中,它的功能在先前版本的 Windows 中不会提供。例如,由 Ping 提供者定义的Win32_PingStatus 类不会在 Windows 2000 中提供。因为这些新的提供者通常利用了 Windows 新版本中的某些功能,但这些功能在较早版本中并不存在。
问题 7:为什么 WMI 操作返回一个错误?
在开始之前,请首先确认错误是否的确是一个 WMI 错误。WMI 错误编号从 8004xxxx 开始(例如 80041001)。您可以查找 WMI 错误编号并返回代码,方法是访问http://msdn.microsoft.com/library/default.asp 并搜索“WMI Return Codes”(WMI 返回代码)。如果找不到需要的信息,请尝试在 MSDN 中搜索特定的错误编号。
如果在运行脚本的过程中没有返回任何错误编号,您可以查看位于 %windir%system32wbemlogs 文件夹的 WMI 日志文件。如果很难判断刚刚运行的脚本返回的是什么错误,请删除所有日志然后重新运行一次。这样应该可以轻松找到与脚本相关的错误。
如果在日志文件中找不到错误,您也许需要重新设定日志的记录等级。要获得尽可能多的信息,请将记录等级设置为“详细”(verbose)。如果操作系统是 Windows 2000、Windows NT 和 Windows Me/98/95,修改记录等级之后需要重启 WMI;对于 Windows XP 和 Windows Server 2003 则无需这样。关于配置记录等级的详细信息,请访问http://msdn.microsoft.com/library/default.as
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7868752/viewspace-1056801/ ,如需转载,请注明出处,否则将追究法律责任。