在Windows操作系统中,用于管理信息和活动的基础架构被称为Windows管理规范(Windows Management Instrumentation,简称WMI)。
WMI还向操作系统以及其他组件提供管理数据,例如系统中心操作管理器(SCOM)或Windows远程管理。
什么是Windows管理规范(WMI)?
WMI是一个平台,旨在管理和监控个人电脑、服务器以及其他网络设备上的操作系统和Microsoft应用及服务。
它提供了一个全面、可扩展且易于使用的编程接口,通过该接口可以编程方式访问由Microsoft管理的计算机和其他网络设备上的信息和服务。
该平台可用于发现和监控计算机上的操作系统、服务和应用程序,同时也可以访问注册表和文件系统数据。此外,它还支持创建和管理自动化计算机管理的脚本和程序。
WMI采用Windows查询语言(WQL)进行信息查询,并在操作系统、计算机和设备上执行操作。
它还允许访问PowerShell,这是一种功能强大的Windows管理工具,可以用于创建自动化脚本。
此外,WMI允许用户构建自定义应用程序,从而扩展Windows系统和应用程序的管理能力。
对于需要监控机器状态、进行基本故障排除和收集性能数据的用户来说,WMI是一个非常实用的工具。
WMI的目的是什么?
WMI在Windows企业网络中非常重要,因为它简化了企业网络组件的操作和管理,通过将数据传递给其他产品,从而提高了增强性和可扩展性。
WMI的主要目标是为Windows系统的各个方面提供统一的管理框架体验,包括:
- 操作系统组件
- 进程和线程
- 服务
- 设备
- 驱动程序
- 应用
- 用户帐户
- 安全设置
WMI的开发目的是为了减少与Windows系统相关的操作和开发成本和时间。它还允许用户监控系统事件并收集性能数据,这些数据可用于解决问题或跟踪一段时间内的趋势。
WMI最常见的用途是自动化管理任务,并在不直接与操作系统交互的情况下访问数据。因此,对于需要自动化耗时过程的管理员和软件开发人员来说,WMI是一个非常棒的选择。
从监控系统性能到获取应用程序数据,一切皆有可能。它使开发人员能够创建更智能、更高效的应用程序,同时还确保IT管理员能够以最少的努力完成他们的任务。
WMI为访问系统信息提供了一个参考实现,是管理和监控Windows系统的关键工具,它是Azure机器学习和AzureML的基础,并为各种第三方产品提供支持。
WMI的使用
Windows管理规范(WMI)是Microsoft提供的基于Web的企业管理(WBEM)的实现,WBEM是一个旨在开发访问公司治理信息的标准化技术的行业倡议。
WMI 使用通用信息模型(CIM)行业标准表示系统、应用程序、网络、设备以及其他托管组件。分布式管理任务组(DMTF)负责创建和维护CIM。
WMI的设计用途广泛,支持各种管理职责,并提供灵活可扩展的架构,允许制造商编写新的WMI提供程序以支持新设备、应用程序和其他改进。
WMI的其他用途包括:
- 全面管理Windows操作系统和Microsoft网络设备及服务。
- 连接远程计算机以访问WMI数据。
- 发现有关系统的信息,例如正在运行的程序和已安装的服务。
- 检索有关硬件规格的信息并执行操作,例如关闭或重新启动系统。
- 启动应用程序、启动、停止、配置服务和访问数据。
- 管理应用程序的开发人员可以使用此API在Visual Basic或Windows Scripting Host(WSH)中创建脚本。
WMI架构
WMI(Windows管理规范)是微软的一项技术,最初出现在Windows 2000中。它允许程序员构建可与任何支持WMI的系统一起使用的管理程序。
现在让我们深入了解WMI的架构和相关术语。
WMI架构的流程从对象开始:硬盘、网卡、操作系统或服务等组件都是托管对象(可以通过WMI进行管理)。WMI基础结构通过提供程序从对象接收数据。它提供并接收来自WMI的消息,并将它们传递给对象。
WMI提供程序包含一个DLL和一个托管对象格式(MOF)文件,用于监视来自对象的事件和数据。WMI根据提供者接口的功能对提供者进行分类。
Windows中有许多内置的WMI提供程序,包括Active Directory提供程序、引导配置数据(BCD)WMI提供程序、分布式文件系统(DFS)提供程序、事件日志提供程序、Hyper-V WMI提供程序、Win32提供程序、注册表提供程序和SNMP提供程序。
WMI基础结构是Microsoft Windows操作系统的一个组件,称为WMI服务(winmgmt)。WMI核心和WMI存储库是WMI基础结构的两个部分。
WMI存储库是由WMI命名空间组织的分层数据存储,通常称为通用信息模型(CIM)。WMI服务在系统启动时建立许多命名空间,包括root默认、rootcimv2和root订阅。
此外,该服务还会生成一组默认的类定义,其中包括Win32和WMI系统类。其他WMI命名空间可能由其他WMI提供程序创建,每个命名空间包含多个WMI对象。
WMI服务充当提供者、管理应用程序和WMI存储库之间的中介。存储库中只存储关于对象的静态数据,例如提供程序定义的类。WMI在客户端请求时从提供程序动态获取大部分数据。
WMI使用者是与WMI基础结构通信的管理应用程序或脚本。使用WMI的COM API或WMI的脚本API,管理程序可以查询、逐项列出数据、运行提供程序方法和订阅事件。
WMI为远程和本地检索管理数据创建了一个标准化的接口。统一接口从操作系统的应用程序编程接口(API)中抽象出来。这允许应用程序和脚本收集管理数据,而无需了解操作系统API。
如何运行WMI查询?
WMI平台的一个显著特点是其能够查询其存储库,以获取关于类、实例或模式数据的详细信息。这些指标与本地和远程系统、操作系统、软件以及其他管理活动的清单相关。
查询类型
从WMI存储库中检索信息的查询大致分为两种类型:
同步查询:这种查询在整个查询过程中控制应用程序的操作。它比异步调用更简单,因为它只需要一个接口调用。但是,对于大型搜索或基于网络的查询,它可能会冻结您的应用程序。
异步查询:当查询大量数据会影响系统或网络速度时,最好使用异步查询。
WQL(WMI查询语言)
查询WMI的一种流行方式是使用WMI查询语言。
SQL(结构化查询语言)用于数据库环境,而WQL则用于WMI。它们都具有相似的语法结构。
Select、From和Where是用于启动查询的基本WQL语句。
典型的WMI查询首先使用“Select”命令从WMI类中选择所有属性。星号(“*”)用于从WMI类中选择每个属性。在选择属性(一个或多个属性,或所有属性)之后,可以使用“From”关键字指定要查询的WMI类。 您可以参考SQL备忘单以了解确切的语法。
WQL可以通过默认安装在Windows操作系统中的WMI Tester(wbemtest.exe)来执行。WMI查询也可以通过Windows PowerShell、VBScript和C语言来执行。
WQL查询的类型
WQL查询用于获取三种不同类型的信息。
对象查询:可以使用这些查询来检索有关Windows系统资源的信息。
事件查询:这些查询用于跟踪事件日志的变化、进程的启动、服务的状态、计算机的可用性或可用磁盘空间的数量,以及其他实体或事件。
架构查询:这些查询用于获取有关WMI架构结构的详细信息。
运行查询
现在让我们看看如何运行对象查询。
以下方法说明了如何检查本地系统上的WIN_32进程。
WMI Tester工具通过命令行输入wbemtest.exe来执行。
将弹出以下窗口。
要连接到包含要查询的类的WMI命名空间(大多数情况下是RootCimv2):请点击连接选项卡。
要运行查询,请点击“查询”选项卡,如下所示:
然后输入要检索其信息的查询。 例如,让我们通过运行以下命令来检索在本地系统上运行的所有进程:
select * From Win32_process
点击应用选项卡后,您将看到以下结果:
上述基于GUI的执行也可以通过PowerShell在命令提示符下进行:
在PowerShell平台中,要获取所有win_32进程的列表,请使用以下代码:
Get-WmiObject -Class Win32_Process
要获取所有PowerShell查询参数,请访问Microsoft PowerShell 管理页面。
要以VBScript和C语言运行此查询,微软文档页面将提供完整的见解。
查询WMI存储库的另一种方法是通过WMIC命令:
- 从命令提示符运行CMD
- 输入WMIC并回车以启动程序
- 然后命令提示符将变为wmic:rootcli>
管理员可以从此提示运行WMI查询。
例如,要加载本地系统的CPU信息,命令将是:
wmic:rootcli> WMIC CPU
结果/信息将显示在命令提示符中。
AddressWidth Architecture AssetTag Availability Caption Characteristics ConfigManagerErrorCode ConfigManagerUserConfig CpuStatus CreationClassName CurrentClockSpeed CurrentVoltage DataWidth Description DeviceID ErrorCleared ErrorDescription ExtClock Family InstallDate L2CacheSize L2CacheSpeed L3CacheSize L3CacheSpeed LastErrorCode Level LoadPercentage Manufacturer MaxClockSpeed Name NumberOfCores NumberOfEnabledCore NumberOfLogicalProcessors OtherFamilyDescription PartNumber PNPDeviceID PowerManagementCapabilities PowerManagementSupported ProcessorId ProcessorType Revision Role SecondLevelAddressTranslationExtensions SerialNumber SocketDesignation Status StatusInfo Stepping SystemCreationClassName SystemName ThreadCount UniqueId UpgradeMethod Version VirtualizationFirmwareEnabled VMMonitorModeExtensions VoltageCaps 64 9 To Be Filled By O.E.M. 3 Intel64 Family 6 Model 142 Stepping 10 252 1 Win32_Processor 1801 7 64 Intel64 Family 6 Model 142 Stepping 10 CPU0 100 205 1024 6144 0 6 31 GenuineIntel 1801 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz 4 4 8 To Be Filled By O.E.M. FALSE BFEBFBFF000806EA 3 CPU TRUE To Be Filled By O.E.M. U3E1 OK 3 Win32_ComputerSystem RENEE-HP 8 51 FALSE TRUE
有关WMIC别名和动词的更多信息,请访问微软 wmic。
WMI常见问题
WMI中使用了哪些端口?
使用的端口是49152和65535。WMI所基于的分布式组件对象模型(DCOM)默认使用随机选择的TCP端口在49152和65535范围之间进行连接。
WMI是否已弃用?
WMI仍然受到支持。从Windows 10版本21H1和Windows Server的21H1半年频道发布开始,不再支持WMI命令行(WMIC)程序。
什么是WMI监控工具?
有许多工具可用于监控WMI。其中,以下是一些特别受欢迎的工具:
带有服务器和应用程序监控器的SolarWinds WMI监控器
带有PRTG的Paessler WMI服务传感器
Nagios XI
Sapien WMI资源管理器
免费工具有WMI Explorer、Adrem免费WMI工具
如何解决WMI问题?
在尝试访问应用程序或脚本中的WMI本地或远程数据时,您可能会看到从缺少类到访问冲突等错误。请查看Microsoft WMI 疑难解答指南,以获得此类错误的解决方案。
结论
总而言之,Windows管理规范是一个强大的工具,可以处理各种与Windows系统相关的功能。尽管它最初可能看起来有些令人生畏,但对于任何处理Windows系统的人来说,WMI都是一个非常有用的工具。