about_WMI

简短说明

Windows Management Instrumentation (WMI) 使用通用信息模型 (CIM) 来表示现代企业的系统、应用程序、网络、设备和其他可管理组件。

长说明

Windows Management Instrumentation (WMI) 是 Microsoft 的基于 Web 的企业管理 (WBEM) 行业标准的实现。

经典 WMI 使用 DCOM 来与网络设备通信以管理远程系统。 Windows PowerShell 3.0 引入了一个 CIM 提供程序模型,该模型使用 WinRM 来消除对 DCOM 的依赖。 此 CIM 提供程序模型还使用了新的 WMI 提供程序 API,使开发人员能够以本机代码 (C++) 编写 Windows PowerShell cmdlet。

请不要将 WMI 提供程序与 Windows PowerShell 提供程序相混淆。 许多 Windows 功能都有一个关联的 WMI 提供程序来公开其管理功能。 若要获取 WMI 提供程序,请运行一个获取 __Provider WMI 类实例的 WMI 查询,例如以下查询。

Get-WmiObject -Class __Provider

WMI 的三个组件

WMI 的以下三个组件与 Windows PowerShell 交互:命名空间、提供程序和类。

WMI 命名空间将 WMI 提供程序和 WMI 类组织成相关组件的组。 这样,它们就类似于 .NET Framework 命名空间。 命名空间不是物理位置,而更像是逻辑数据库。 所有 WMI 命名空间都是 __Namespace 系统类的实例。 默认 WMI 命名空间是 root/cimv2(自 Microsoft Windows 2000 起)。 若要使用 Windows PowerShell 获取当前会话中的 WMI 命名空间,请使用以下格式的命令。

Get-WmiObject -Class __Namespace

若要获取其他命名空间中的 WMI 命名空间,请使用 Namespace 参数更改搜索位置。 以下命令查找驻留在 root/cimv2/Applications 命名空间中的 WMI 命名空间。

Get-WmiObject -Class __Namespace -Namespace root/cimv2/applications

WMI 命名空间是分层的。 因此,获取特定系统上所有命名空间的列表需要从根命名空间开始执行递归查询。

WMI 提供程序公开有关 Windows 可管理对象的信息。 提供程序从组件检索数据,并通过 WMI 将该数据传递给管理应用程序,例如 Windows PowerShell。 大多数 WMI 提供程序都是动态提供程序,这意味着它们在通过管理应用程序请求时动态获取数据。

查找 WMI 类

在 Windows 8 的默认安装中,root/cimv2 中有超过 1,100 个 WMI 类。 对于如此多的 WMI 类,难题变成了如何确定用于执行特定任务的适当 WMI 类。 Windows PowerShell 3.0 提供了两种查找与特定主题相关的 WMI 类的方式。

例如,若要在 root/cimv2 WMI 命名空间中查找与磁盘相关的 WMI 类,可以使用如下所示的查询。

Get-WmiObject -List *disk*

若要查找与内存相关的 WMI 类,可以使用如下所示的查询。

Get-WmiObject -List *memory*

CIM cmdlet 还提供发现 WMI 类的功能。 请使用 Get-CimClass cmdlet 完成此操作。 此处显示的命令列出了与视频相关的 WMI 类。

Get-CimClass *video*

Tab 键扩展在更改 WMI 命名空间时起作用,因此使用 Tab 键扩展可以轻松发现子 WMI 命名空间。 在以下示例中,Get-CimClass cmdlet 列出了与电源设置相关的 WMI 类。 若要查找它,请键入 root/cimv2 命名空间,然后按 Tab 键几次,直到出现电源命名空间。 命令如下:

Get-CimClass *power* -Namespace root/cimv2/power