about_WMI
应用到: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0
about_WMI
Windows Management Instrumentation (WMI) 使用通用信息模型 (CIM) 来表示系统、应用程序、网络、设备和其他现代企业的可管理组件。
Windows Management Instrumentation (WMI) 是 Microsoft 的基于 Web 的企业管理 (WBEM) 行业标准的实现。
典型 WMI 使用 DCOM 与联网设备通信以管理远程系统。Windows PowerShell® 3.0 引入了一个使用 WinRM 的 CIM 提供程序模型,以删除对 DCOM 的依赖。此 CIM 提供程序模型还使用新的 WMI 提供程序 API,这些 API 使开发人员能够采用本机代码 (C++) 编写 Windows PowerShell cmdlet。
不要将 WMI 提供程序与 Windows PowerShell 提供程序混淆。许多 Windows 功能具有关联的 WMI 提供程序,该提供程序可公开其管理功能。若要获取 WMI 提供程序,请运行获取 __Provider WMI 类的实例的 WMI 查询,例如以下查询。
Get-WmiObject -Class __Provider
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 提供程序是动态提供程序,这意味着当通过管理应用程序请求数据时它们会动态获取数据。
在 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*
选项卡展开在更改 WMI 命名空间时有效,因此使用选项卡展开使子 WMI 命名空间更容易被发现。在以下示例中,Get-CimClass cmdlet 列出与电源设置相关的 WMI 类。若要找到它,请键入 root/CIMV2/WMI 命名空间,然后多次按 Tab 键,直到电源命名空间显示。以下是该命令:
Get-CimClass *power* -Namespace root/cimv2/power