使用 WMI

可以从客户端应用程序和脚本使用 WMI。 它提供了一个基础结构,使发现和执行管理任务变得容易。 此外,还可以通过创建自己的 WMI 提供程序来添加可能的管理任务集。

注意

用于编写应用程序和脚本的下一代 WMI 版本可通过 Windows Management Infrastructure (MI) 获得。 有关详细信息,请参阅 MI 提供程序和客户端

以下是本节中要讨论的主题:

从 WMI 获取数据

以下过程介绍如何通过编写脚本或应用程序从 WMI 获取数据。

通过编写脚本或应用程序从 WMI 获取数据

  1. 确定使用哪种语言。 有关脚本编写的详细信息,请参阅创建 WMI 脚本。 有关 C++ 的详细信息,请参阅使用 C++ 创建 WMI 应用程序。 要详细了解如何使用 C# 或 WMI .NET,请参阅 WMI .NET 概述

    可以使用多种语言查看或操作 WMI 数据。 下表列出了介绍如何使用脚本和应用程序语言获取数据的主题。

应用程序语言 主题
用 Microsoft ActiveX 脚本托管编写的脚本,包括 Visual Basic Scripting Edition (VBScript) 和 Perl
适用于 WMI 的脚本 API
首先创建 WMI 脚本
有关脚本代码示例,请参阅脚本和应用程序的 WMI 任务以及 TechNet ScriptCenter 脚本存储库。
Windows PowerShell
Windows PowerShell 入门
WMI PowerShell Cmdlet,例如 Get-WmiObject
Visual Basic 应用程序
适用于 WMI 的脚本 API
Active Server Pages
适用于 WMI 的脚本 API
首先,为 WMI 创建 Active Server Pages
C++ 应用程序
适用于 WMI 的 COM API
首先,使用 C++ 创建 WMI 应用程序WMI C++ 应用程序示例(包含示例)。
用 C#、Visual Basic .NET 或 J# 编写的 .NET Framework 应用程序
Microsoft.Management.Infrastructure 命名空间中的类。
注意:System.Management 是涵盖 WMI 托管代码的原始命名空间。 但是,System.Management 的基础技术通常比Microsoft.Management.Infrastructure 慢,并且不会缩放。 因此,不建议对新项目使用 System.Management。 (有关 System.Management 的详细信息,请参阅 WMI .NET 概述。)
  1. 确保与远程计算机的连接正常。

    有关详细信息,请参阅连接到远程计算机上的 WMI

  2. 连接到远程计算机上的 WMI 需要正确的安全设置,如维护 WMI 安全性中所述。 下表列出了介绍如何使用脚本和应用程序语言配置安全设置的主题。

    语言 主题
    任何语言的脚本,Visual Basic 应用程序
    使用 VBScript 设置默认进程安全级别
    Active Server Pages
    为 WMI ASP 脚本配置 IIS 5 及更高版本
    C++
    使用 C++ 设置默认进程安全级别在 IWbemServices 和其他代理上设置安全性
  3. 连接到 WMI 后,可以通过查询和枚举获取数据。

    有关详细信息,请参阅操作类和实例信息利用 WQL 进行查询

  4. 注册表数据可以通过 WMI 获得,你可以创建新的键和值,也可以修改现有的键和值。

    有关详细信息,请参阅修改系统注册表

  5. 可以通过 WMI 订阅事件通知,可以在系统重新启动之间临时订阅,也可以永久订阅。

    有关详细信息,请参阅监视事件接收 WMI 事件

  6. 系统的性能计数器数据可通过 WMI 获得。

    系统性能库计数器将转换为 WMI 类。 有关详细信息,请参阅监视性能数据

  7. 脚本和应用程序的 WMI 任务介绍了如何使用 WMI 执行许多管理任务。

向 WMI 提供数据

以下过程介绍如何通过编写提供程序向 WMI 提供数据。

通过编写提供程序向 WMI 提供数据

  • 决定要编写的提供程序类型。

    无法在 VBScript 中编写 WMI 提供程序。 但是,可以采用其他几种方法来编写 WMI COM 提供程序:

    • 在 Visual Studio 中使用 WMI ATL 向导。

      此方法创建非托管 COM 提供程序。 有关详细信息,请参阅添加 WMI 实例提供程序添加 WMI 事件提供程序

    • 在任何集成开发环境中直接使用 COM。

      此方法创建非托管 COM 提供程序。

    • 在 .NET Framework 中使用 WMI 创建托管代码提供程序。

      此方法创建托管代码提供程序。 托管代码提供程序可以采用任何 .NET Framework 语言编写,比 WMI COM 提供程序编写更简单,并且可以从基于 WMI CIM 的类(如 Win32 类)获取数据。 但是,.NET Framework WMI 提供程序存在一些限制。 有关详细信息,请参阅使用 WMI 管理应用程序

    • 不建议使用提供程序框架类

      使用 COM 或 .NET Framework 提供程序的 WMI ATL 向导取代了提供程序框架。 不再建议使用提供程序框架类创建 WMI COM 提供程序。 下表列出了介绍如何使用 COM 或 .NET Framework 提供程序的主题。

    提供程序 主题
    COM 提供程序与 WMI 位于同一进程中
    向 WMI 提供数据
    COM 分离提供程序
    在应用程序中合并提供程序
    C# 或 Visual Basic.NET 中的 .NET Framework 提供程序
    使用 WMI 管理应用程序

WMI 的重要任务

以下主题提供有关使用 WMI 监视和控制企业组件的信息。

主题 说明
脚本和应用程序的 WMI 任务
描述如何在执行常见计算机和网络管理任务的脚本和应用程序中找到正确的 WMI 类和过程,例如为远程计算机添加新的打印机连接或查找计算机上安装的所有修补程序。
创建 WMI 应用程序或脚本
任何使用 ActiveX 对象的脚本语言(如 VBScript 或 Perl)都可以访问 WMI 数据。 应用程序可以在 C++ 中使用适用于 WMI 的 COM API 访问 WMI;或者在 Visual Basic 中使用 Wbemdisp.tlb 类型库适用于 WMI 的脚本 API 访问 WMI。
连接到远程计算机上的 WMI
描述脚本、应用程序和提供程序如何与远程计算机上的 WMI 建立连接,以获取数据或控制硬件和软件。
使用 Windows PowerShell 连接到远程计算机上的 WMI
介绍如何使用 Windows PowerShell 在远程计算机上建立与 WMI 的连接,以获取数据或控制硬件和软件。
监视事件
介绍如何通过创建临时或永久性 WMI 事件使用者来获取事件通知。
向 WMI 提供数据
WMI 通过从提供程序获取动态管理数据,向客户端脚本和应用程序提供动态管理数据。
在 64 位计算机上获取和提供数据
介绍如何访问 64 位系统上的提供程序编写器的非默认提供程序和注意事项。