使用 WMI

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

注意

用于编写应用程序和脚本的下一代 WMI 版本可通过Windows管理基础结构 (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++ 和 WMIC++ 应用程序示例创建 WMI 应用程序"开始"菜单 (包含示例) 。
.NET Framework用 C#、Visual Basic .NET 或 J 编写的应用程序#
Microsoft.Management.Infrastructure 命名空间中的类。
[!注意]
System.Management 是涵盖 WMI 托管代码的原始命名空间。 但是, System.Management 的基础技术通常比 Microsoft.Management.Infrastructure 更慢,并且不会进行缩放。 因此,不建议对新项目使用 System.Management 。 (有关 System.Management 的详细信息,请参阅 WMI .NET Overview.)

  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 管理应用程序

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

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

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

WMI 的重要任务

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

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