WMI问题全解(Windows管理规范)<转>
金蝶云社区-lz_xiaohe
lz_xiaohe
0人赞赏了该文章 3,451次浏览 未经作者许可,禁止转载编辑于2015年08月18日 18:02:44

在部分操作系统如win7 64位上,由于WMI不能正常工作导致专业版V14.1不能正常安装或使用,如提示:

本文属转载,供需要的人士参考。

来源:http://www.cnblogs.com/haiq/archive/2011/01/14/1935377.html#EJB

WMI问题全解(Windows管理规范)<转>

问题 1:WMI 是什么,它能帮我做什么?问题 2: WMI 适用于那些平台?问题 3:如果 WMI 向外界暴露特定的功能,我如何才能知道?问题 4:如果 WMI 没有提供我想要的功能,我应该怎么办?问题 5:在哪里可以找到使用 WMI 的示例脚本?问题 6: 为什么我的脚本可以在某个版本的 Windows 上运行,但在另外一个版本的 Windows 上却不能运行?问题 7:为什么 WMI 操作返回一个错误?问题 8:WMI 不工作。如何解决这个问题?问题 9:如何设置 WMI 命名空间的安全性?问题 10:如何使用 WMI 管理远程计算机?问题 11:远程操作涉及到第三台计算机的时候为何失败?问题 12:为什么我的查询需要很长时间才能完成?问题 13:如何列出特定计算机上已经安装的所有应用?问题 14:如何获得性能计数器数据?问题 1:WMI 是什么,它能帮我做什么?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 的功能还包括事件触发、远程调用、查询、查看、架构的用户扩展、指示等等。返回问题列表问题 2: 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。
返回问题列表问题 3:如果 WMI 向外界暴露特定的功能,我如何才能知道?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”的类,
请在命令提示行运行以下命令:


[tr][td]cscript search.vbs service

[tr][td]' Script for finding a class in WMI Repository

Set args = wscript.arguments
If args.Count <= 0 Then
Wscript.Echo "Tool to search for a matching class in the WMI Repository. "
Wscript.Echo "USAGE: []"
Wscript.Echo "Example1: Cscript search.vbs service"
Wscript.Echo "Example2: Cscript search.vbs video root\cimv2"
Else
' If no Namespace is specified then the Default is the ROOT namespace
rootNamespace = "\\.\ROOT"
keyword = args(0)
If args.Count > 1 Then
rootNamespace = args(1)
End If
EnumNameSpace rootNamespace
Wscript.Echo vbNewLine
End if

' Subroutine to recurse through the namespaces

Sub EnumNameSpace(parentNamespaceName)

Set objService = GetObject("winmgmts:" & parentNamespaceName)

Set collMatchingClasses = objService.Execquery _
("Select * From meta_class Where __class " & _
"Like '%" & keyword & "%'")
If (collMatchingClasses.count > 0) Then
Wscript.Echo vbNewLine
Wscript.Echo vbNewLine
Wscript.Echo "Matching Classes Under Namespace: " & parentNamespaceName

For Each matchingClass in collMatchingClasses
Wscript.Echo " " & matchingClass.Path_.CLASS
Next
End if

Set collSubNamespaces = objService.Execquery _
("select * from __namespace")
For Each subNameSpace in collSubNamespaces
EnumNameSpace subNameSpace.path_.namespace + _
"\" + subNameSpace.Name
Next

End Sub

该脚本只能运行在 Windows XP 或 Server 2003 之上,因为作为 WMI 查询语言一部分的 LIKE 运算符只能用于这两个平台。返回问题列表