windows server 2025,windows 11 ,启用WMIC命令的方法。桌面端 Win10/Win11:WMIC 属于 Windows 可选能力 (Capability),CapabilityName: WMIC~~~~ Windows Server 2022/2025:IIS‑WMICompatibility(IIS 6 WMI兼容性),属于服务器角色功能 (Feature)
WMIC (英文全称Windows Management Instrumentation Command-line)是 Windows 管理工具(WMI)的命令行界面,允许用户查询和管理系统设置、配置以及 Windows 操作系统的其他方面。
WMIC(Windows Management Instrumentation Command-line)是 Windows 操作系统中的一个命令行工具,它提供了一个与 Windows 管理工具(WMI)交互的接口。WMIC 允许用户通过命令行查询和管理系统信息、硬件设备、软件配置、进程等系统设置。通过 WMIC,用户可以执行多种管理任务,如获取系统性能信息、管理用户账户、查看磁盘状态等。
WMIC (Windows Management Instrumentation Command-line) 功能分类的表格化概览:
| 功能类别 | 功能描述 |
|---|---|
| 系统信息查询 | 提供系统硬件、操作系统、服务等的详细信息。例如:wmic os、wmic cpu、wmic memorychip。 |
| 硬件设备管理 | 获取和管理硬件信息,如 CPU、硬盘、内存、显示器、网络适配器等。例如:wmic diskdrive、wmic nic。 |
| 进程管理 | 获取、启动、停止进程等。例如:wmic process、wmic process where "name='processname'" call terminate。 |
| 软件与应用管理 | 查询和管理已安装的软件或应用程序。例如:wmic product、wmic service。 |
| 网络配置与状态 | 获取网络适配器、IP 配置、网络连接等信息。例如:wmic nicconfig、wmic path win32_networkadapter。 |
| 用户和账户管理 | 管理本地用户账户和组信息。例如:wmic useraccount、wmic group。 |
| 磁盘与存储管理 | 查询磁盘驱动器和分区的详细信息。例如:wmic logicaldisk、wmic volume。 |
| 电源管理 | 获取电池、适配器等电源相关的设备信息。例如:wmic path Win32_Battery。 |
| 打印机管理 | 查询和管理打印机设备。例如:wmic printer。 |
| 事件查看与日志 | 获取事件日志和错误报告。例如:wmic ntevent。 |
这些分类涵盖了 WMIC 的常用功能,用户可以通过不同的命令查询系统的硬件、软件、进程、网络等信息,并进行一些管理任务。
WMIC(Windows Management Instrumentation Command-line) 操作模式的分类及相关功能的表格:
| 操作模式 | 功能描述 | 示例命令 |
|---|---|---|
| 查询模式(Query Mode) | 用于查询系统信息、硬件信息、配置状态等。通过查询语句从 WMI 类获取数据。 | wmic cpu get caption, maxclockspeed |
| 执行模式(Execute Mode) | 用于执行 WMI 方法(如启动、停止进程、调用服务等)或更改系统配置。 | wmic process where name="notepad.exe" call terminate |
| 设置模式(Set Mode) | 用于更改某些系统设置或配置,如设置用户密码、更改服务状态等。 | wmic service where name="wuauserv" call change startmode="disabled" |
| 别名模式(Alias Mode) | 用于列出和使用 WMIC 别名(即 WMI 类别),简化常见查询。 | wmic alias list brief |
| 输出重定向模式(Redirect Mode) | 用于将 WMIC 的输出结果重定向到文件中,方便后续分析。 | wmic os get caption > os_info.txt |
| 批处理模式(Batch Mode) | 用于批量执行多个命令,常用于自动化脚本中,执行一组操作。 | 创建一个包含多个 WMIC 命令的批处理文件(如 .bat 文件) |
| 条件查询模式(Where Clause Mode) | 用于在查询中添加条件,从而获取更精确的信息。 | wmic process where "name='notepad.exe'" get processid, caption |
| 帮助模式(Help Mode) | 提供 WMIC 命令及其语法的帮助信息。 | wmic /? |
| 版本信息模式(Version Mode) | 查看 WMIC 工具的版本信息。 | wmic /version |
解释:
- 查询模式:主要用于从 WMI 中查询信息,返回系统或硬件配置数据。
- 执行模式:执行某些方法,如停止进程、管理服务等。
- 设置模式:更改系统设置、启动模式等。
- 别名模式:列出和使用 WMI 别名类,简化查询。
- 输出重定向模式:将命令的输出结果保存到文件。
- 批处理模式:允许通过批处理脚本执行多个 WMIC 命令。
- 条件查询模式:在查询时加入特定条件,获取更精准的信息。
- 帮助模式:查看 WMIC 工具的帮助和使用说明。
- 版本信息模式:查看 WMIC 的版本信息,通常用于确认工具的当前版本。
这些操作模式帮助用户根据需求灵活地查询和管理 Windows 系统的配置和状态。
WMIC为什么被禁用,未来移除?


WMIC(Windows Management Instrumentation Command-line)命令工具被弃用的原因与多方面的技术和设计考虑有关。主要原因包括:
1. PowerShell 的强大功能
- PowerShell 替代:微软推出了 PowerShell,并逐渐将其作为主要的系统管理工具。PowerShell 提供了比 WMIC 更强大、更灵活的功能,尤其在脚本化和自动化管理方面。PowerShell 不仅支持 WMI,还支持更复杂的对象模型、管道、模块等功能,使得它成为了管理和自动化任务的首选工具。
- PowerShell 可以访问 WMI 和其他系统管理工具:PowerShell 本身也可以通过
Get-WmiObject或Get-CimInstance等命令与 WMI 进行交互,提供比 WMIC 更丰富的功能和更简洁的语法。PowerShell 通过
Get-WmiObject和Get-CimInstance命令能够与 Windows 管理工具(WMI)进行交互,并能提供比 WMIC 更加丰富的功能和简洁的语法。这些命令允许你查询、管理和操作 Windows 系统中的许多组件和服务。下面是一些常见的示例,展示如何使用这两个命令。1. 查询操作系统信息
使用
Get-WmiObjectpowershellCopy CodeGet-WmiObject -Class Win32_OperatingSystem此命令将返回有关当前操作系统的详细信息,包括操作系统版本、构建号、安装日期等。
使用
Get-CimInstancepowershellCopy CodeGet-CimInstance -ClassName Win32_OperatingSystemGet-CimInstance是 PowerShell 3.0 及之后版本引入的命令,通常建议使用它,因为它在远程管理和性能上比Get-WmiObject更加高效。2. 获取处理器信息
使用
Get-WmiObjectpowershellCopy CodeGet-WmiObject -Class Win32_Processor这个命令会列出有关计算机中所有处理器的信息,例如处理器的名称、核心数、线程数等。
使用
Get-CimInstancepowershellCopy CodeGet-CimInstance -ClassName Win32_Processor与
Get-WmiObject类似,Get-CimInstance返回类似的处理器信息。3. 获取内存信息
使用
Get-WmiObjectpowershellCopy CodeGet-WmiObject -Class Win32_PhysicalMemory此命令会列出计算机中所有物理内存条的详细信息,包括容量、制造商、速度等。
使用
Get-CimInstancepowershellCopy CodeGet-CimInstance -ClassName Win32_PhysicalMemory通过
Get-CimInstance查询内存信息,得到的输出同样包括内存的详细信息。4. 查询磁盘驱动器信息
使用
Get-WmiObjectpowershellCopy CodeGet-WmiObject -Class Win32_DiskDrive此命令会返回有关硬盘驱动器的信息,例如型号、容量、接口类型等。
使用
Get-CimInstancepowershellCopy CodeGet-CimInstance -ClassName Win32_DiskDrive同样,
Get-CimInstance会提供类似的信息,但在处理大量数据时性能较好。5. 查询系统服务
使用
Get-WmiObjectpowershellCopy CodeGet-WmiObject -Class Win32_Service该命令列出了当前计算机上所有运行的系统服务及其状态。
使用
Get-CimInstancepowershellCopy CodeGet-CimInstance -ClassName Win32_Service通过
Get-CimInstance获取的系统服务信息与Get-WmiObject相似,但通常执行速度更快。6. 获取网络适配器信息
使用
Get-WmiObjectpowershellCopy CodeGet-WmiObject -Class Win32_NetworkAdapter此命令返回有关网络适配器的信息,包括适配器名称、MAC 地址、连接状态等。
使用
Get-CimInstancepowershellCopy CodeGet-CimInstance -ClassName Win32_NetworkAdapter这同样会返回网络适配器的详细信息,但
Get-CimInstance在跨网络或远程查询时表现更佳。7. 获取事件日志信息
使用
Get-WmiObjectpowershellCopy CodeGet-WmiObject -Class Win32_NTLogEvent此命令返回事件日志中的所有条目。你可以根据
EventCode、TimeGenerated等字段筛选具体的日志。使用
Get-CimInstancepowershellCopy CodeGet-CimInstance -ClassName Win32_NTLogEventGet-CimInstance也可以用来获取事件日志信息,性能更高。8. 查询操作系统的启动时间
使用
Get-WmiObjectpowershellCopy Code(Get-WmiObject -Class Win32_OperatingSystem).LastBootUpTime这将返回操作系统上次启动的时间。
使用
Get-CimInstancepowershellCopy Code(Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTimeGet-CimInstance同样可以返回操作系统的启动时间,通常它比Get-WmiObject更高效。9. 列出当前的用户会话
使用
Get-WmiObjectpowershellCopy CodeGet-WmiObject -Class Win32_ComputerSystem这个命令列出了当前计算机的用户会话信息。
使用
Get-CimInstancepowershellCopy CodeGet-CimInstance -ClassName Win32_ComputerSystem同样返回当前用户会话信息,但
Get-CimInstance的表现通常更优。Get-WmiObject和Get-CimInstance都能够访问 Windows Management Instrumentation(WMI)数据源,并返回系统管理和硬件组件的信息。Get-CimInstance是现代化的命令,更加高效,特别是在处理大量数据或远程管理时,相较于Get-WmiObject具有更好的性能。- PowerShell 提供了更简洁的语法和更多的功能,可以轻松地进行数据筛选和格式化,因此它已经逐渐取代了传统的 WMIC 工具。
这些示例展示了如何利用 PowerShell 强大的命令来获取 Windows 系统中的各种管理信息,帮助用户更高效地进行系统管理和自动化任务。
2. 不再更新和维护
- 技术陈旧:WMIC 是基于早期的 WMI(Windows Management Instrumentation)接口,它已经没有得到足够的更新和改进。微软逐步将重心转向 PowerShell,这意味着 WMIC 不再作为优先更新和维护的工具。
- 长期支持性差:随着 Windows 操作系统版本的更新,WMIC 的一些功能逐渐不再支持或无法适应新的需求。
3. 更好的用户体验
- PowerShell 的用户体验更优:PowerShell 提供了更丰富的命令和功能,以及更强大的调试和脚本化能力。它支持更复杂的管理任务,并且更符合现代 IT 管理员的需求。
- 模块化和扩展性:PowerShell 具有更强的模块化设计,允许用户加载并扩展许多外部模块,这使得它的功能更加丰富和灵活。
4. 跨平台支持
- PowerShell 的跨平台性:PowerShell 现在已经支持 Windows、Linux 和 macOS,这使得它可以作为跨平台的管理工具。而 WMIC 是 Windows 专用的工具,不具备跨平台的功能。
5. 性能和可扩展性
- 性能限制:WMIC 在执行复杂查询或与大量数据交互时,可能会显得较慢或效率较低。而 PowerShell 提供了更高效的命令处理和更好的性能,特别是在处理大规模数据时,能够提供更高的效率和灵活性。
6. 逐步淘汰
- 微软的战略方向:微软在其官方文档中明确指出,WMIC 已经被弃用,未来不会继续更新和支持 WMIC。微软的未来发展重点将放在 PowerShell 和其他现代工具上,这也促使 IT 管理员逐步转向 PowerShell。
WMIC 完整拆解
核心结论先行:被弃用的只有 wmic.exe 这个命令行外壳程序,底层 WMI 架构、winmgmt 服务、所有 WMI Provider 全部保留并继续受支持。WMIC ≠ WMI,很多人会混淆这一点。 IIS-WMICompatibility 不是 WMIC,是 IIS6 的旧版 WMI 命名空间兼容组件;你贴出来的
Dism /Online /Get-Features看到的IIS-WMICompatibility和 wmic.exe 是两套完全独立的东西,很多文档容易把两者弄混。
一、底层原理
WMIC = Windows Management Instrumentation Command-line,XP SP2 引入,原生 C++ 写的独立命令行客户端,本质是一个 WMI COM API 的命令行封装器。
- 启动 wmic.exe → 通过
wbemcli.dll的 COM 接口IWbemLocator连接本地 / 远程winmgmt(WMI 服务) - 解析命令行查询语句(WQL),转发给 WMI 引擎
- WMI 引擎调用对应 Provider DLL 采集系统信息,返回对象实例
- WMIC 把 WMI 对象实例转换成纯文本表格输出到控制台
架构对比
- WMIC:DCOM 为默认远程传输,老旧 COM 模型,没有对象管道,只能输出文本
- PowerShell CIM(Get-CimInstance):现代栈,优先 WinRM (WS-Man),本地可回退 DCOM;直接返回 .NET 对象,原生支持管道、类型、序列化、跨平台 PowerShell7
弃用底层根源,不只是 “PowerShell 更强”
- WMIC 是单独维护的 C++ 客户端,维护成本高;WMI 团队需要同时维护两套客户端(WMIC + PowerShell WMI/CIM)
- 基于老旧 DCOM,远程安全模型老旧,历史高危漏洞多(如 CVE-2017-0199)
- 输出只有文本,无法结构化处理,不适合现代自动化;无法适配 PowerShell Core(跨平台)
- 命令语法自成一套(WQL+WMIC 参数),和 PowerShell 生态割裂
- 微软战略:统一管理入口收敛到 PowerShell/CIM,减少遗留组件攻击面
时间线:Win10 21H1 正式标记 WMIC 弃用;Win11 22H2 转为 FoD 按需可选包;2026 年 8 月后 Win11 24H2/25H2 彻底移除,不再能通过 Add-Capability 装回 WMIC,但 WMI 服务继续保留Microsoft ...。
二、依赖文件 & 依赖关系
WMIC(wmic.exe)依赖链
wmic.exe(C:\Windows\System32\wbem\wmic.exe)
├─ wmic.dll(WMIC自身逻辑)
├─ wbemcli.dll 【核心COM客户端库,IWbemLocator】
├─ wbemprox.dll WMI代理COM组件
├─ combase.dll / ole32.dll COM子系统
├─ rpcss.dll RPC(DCOM通信依赖)
└─ winmgmt.exe(WMI服务,必选强依赖)
├─ WMI Repository(%windir%\System32\wbem\Repository,ESENT数据库)
├─ 各类Provider DLL:cimwin32.dll、secprov.dll、msiprov.dll等,真正采集硬件/系统信息
└─ esent.dll WMI元数据数据库引擎
卸载 WMIC(Remove-Capability)只删除 wmic.exe、wmic.dll;winmgmt、wbemcli、所有 provider 全部保留,PowerShell CIM/Get-WmiObject 不受任何影响。
IIS-WMICompatibility(服务器端那个 Feature,重点区分)
- 功能:注册
root\MicrosoftIISv2IIS6 遗留 WMI 命名空间,提供wmiis.dll - 用途:给老旧 IIS6 脚本读取 IIS 站点 / 应用池信息,和 wmic.exe 无关
- 依赖:IIS WebMetabase 组件,属于 IIS6 管理兼容套件;不是 WMIC 命令行工具
你之前的混淆点: ✅ Win10/Win11:WMIC 是 Capability(按需能力包),
WMIC~~~~✅ Windows Server2022/2025:WMIC 仍然是 WMIC~~~~ 这个 Capability;IIS-WMICompatibility是另外一个 IIS 相关 Feature,不是 WMIC。网上很多错误博客把两者混为一谈。
三、配套链(两套管理栈对比)
遗留配套链:WMIC + WMI (DCOM)
- 调用入口:CMD /batch 脚本调用 wmic.exe
- 本地通信:COM
- 远程通信:DCOM(135 端口 + 动态端口,防火墙难配置)
- 输出:纯文本,必须靠 findstr/for 循环解析文本
- 适用:老式批处理运维脚本;不支持 PowerShell Core 跨平台
- 扩展边界:只能 WQL 查询;没有内置循环、异常捕获、对象操作
现代配套链:PowerShell CIM(推荐替代栈)
powershell.exe / pwsh.exe
├─ CimCmdlets 内置模块:Get-CimInstance / Invoke-CimMethod
├─ Microsoft.Management.Infrastructure.dll(MMI,CIM托管核心库)
├─ System.Management.Automation.dll
├─ 底层同样复用 winmgmt.exe + WMI Provider(和WMIC共用同一套数据源)
└─ 远程:winrm服务(WS-Man,固定5985 HTTP /5986 HTTPS)
- 输出:原生 PS 对象,管道传递属性,直接导出 JSON/CSV
- 远程:WS-Man 标准化协议,防火墙更友好;跨平台 PowerShell7 Linux/macOS 也支持 CIM 客户端访问 Windows WMI
四、逻辑链路(本地查询示例)
WMIC: wmic cpu get name
- wmic.exe 启动 → 加载 wbemcli.dll
- COM 连接 winmgmt.exe
- winmgmt 加载 cimwin32.dll(Win32 provider)
- cimwin32.dll 读取内核 / 注册表获取 CPU 信息
- WMI 引擎返回 WMI 对象
- WMIC 把对象序列化为文本表格输出
PowerShell CIM 等价: Get-CimInstance Win32_Processor | Select Name
- PowerShell 加载 MMI 库、CimCmdlets
- MMI 调用 WMI COM 接口(本地)或 WS-Man(远程)
- 后面 3~5 步和 WMIC 完全一样,共用同一套 WMI 底层
- 返回 .NET 对象,不是文本;你可以直接访问对象属性
关键点:两者底层数据源完全同源,差异只在上层客户端和输出模型。
五、边界(适用边界、限制边界)
WMIC 边界
✅ 边界内:老批处理快速查询硬件 / OS / 进程 / 服务;兼容 XP~Win11 旧脚本 ❌ 边界外:
- 2026 年 8 月之后新版 Win11 无法再安装 WMIC FoD 包
- 输出文本解析脆弱,字段一变脚本就崩
- DCOM 远程防火墙复杂,安全面大
- 不支持 PowerShell Core 跨平台
- 没有异常处理、对象模型,无法做复杂自动化
WMI/CIM 边界(WMIC 淘汰后仍然保留)
✅ 边界内:所有系统硬件、OS、服务、进程、注册表、事件等 WMI 类查询;本地 + 远程;PowerShell 全自动化;C#/C++ 编程调用 WMI COM/.NET API ❌ 边界外:WMI Provider 本身的缺陷(部分类性能差、部分硬件没有 WMI 提供程序);WMI 仓库损坏依然会报错(这是 winmgmt 服务本身问题,和 WMIC 无关)
六、你给出的 DISM 命令修正与解析
Windows 10 / Windows 11(桌面端,WMIC 是 Capability)
启用 WMIC(FoD 按需包)
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
卸载 WMIC
DISM /Online /Remove-Capability /CapabilityName:WMIC~~~~
Windows Server 2022 / 2025
⚠️ 重点:WMIC 仍然是 Capability
WMIC~~~~;IIS-WMICompatibility 是 IIS 独立 Feature,不是 WMIC 启用 IIS6 WMI 兼容(root\MicrosoftIISv2,和 wmic.exe 无关)
DISM /Online /Enable-Feature /FeatureName:IIS-WMICompatibility /All
禁用 IIS6 WMI 兼容
DISM /Online /Disable-Feature /FeatureName:IIS-WMICompatibility /Remove
查询系统 Feature(服务器角色功能,IIS 相关在这里)
Dism /Online /Get-Features
查询 Capability(WMIC 在这里,桌面和服务器都适用)
Get-WindowsCapability -Online | Where Name -match WMIC
你贴出结果:
IIS-WMICompatibility 状态 : 已禁用,这个不代表 WMIC 不可用;WMIC 状态要用Get-WindowsCapability单独查。
七、迁移映射示例(WMIC → CIM)
| WMIC | PowerShell CIM(推荐) | |
|---|---|---|
| wmic os get Caption,Version | Get-CimInstance Win32_OperatingSystem | Select Caption,Version |
| wmic cpu get name | Get-CimInstance Win32_Processor | Select Name |
| wmic process where name="notepad.exe" delete | Invoke-CimMethod -ClassName Win32_Process -MethodName Terminate |
八、风险边界总结
- 只迁移脚本,WMI 底层不用改动;绝大多数场景直接替换成 CIM cmdlet 即可
- 不要继续依赖 WMIC 做长期自动化:2026 新版 Win11 彻底移除 FoD,无法再安装 wmic.exe
- IIS-WMICompatibility 仅在维护老旧 IIS6 脚本时启用,日常服务器建议保持禁用,减少攻击面(就是你现在看到的状态:已禁用)
一句话:WMIC~~~~ 是 wmic.exe 命令行程序本身(Capability,按需能力包);IIS-WMICompatibility 是 IIS6 遗留 WMI 命名空间组件(Feature,Windows 功能),二者完全独立,没有从属关系,Win10/11、Server2022/2025 都遵守这个规则。
1. WMIC~~~~(Capability)
- 组件:
wmic.exe+wmic.dll,WMIC 命令行客户端 - 类型:Windows Capability(按需能力包,FoD)
- 标识名:
WMIC~~~~ - 适用系统:Win10、Win11、Windows Server 2022、Windows Server 2025
- 查询命令(PowerShell)
Get-WindowsCapability -Online | Where-Object Name -match WMIC
- 安装 / 卸载(DISM)
:: 安装 WMIC
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
:: 卸载 WMIC
DISM /Online /Remove-Capability /CapabilityName:WMIC~~~~
- 底层依赖:
wbemcli.dll、winmgmtWMI 服务;和 IIS 无关 - 作用:提供
wmic.exe命令,用来在 CMD 里查询 / 调用 WMI - 弃用趋势:新版 Win11(24H2+)该 Capability 已移除,无法 Add-Capability 装回;Server 2022/2025 目前还保留该 Capability
2. IIS-WMICompatibility(Feature)
- 组件:
wmiis.dll,IIS6 兼容 WMI Provider - 类型:Windows Feature(系统角色功能)
- 标识名:
IIS-WMICompatibility - 适用系统:Windows Server 2022、Windows Server 2025(桌面 Win10/11 默认不带 IIS 这套 Feature)
- 查询命令(DISM)
DISM /Online /Get-Features | findstr IIS-WMICompatibility
- 启用 / 禁用(DISM)
:: 启用 IIS6 WMI兼容
DISM /Online /Enable-Feature /FeatureName:IIS-WMICompatibility /All
:: 禁用并移除 IIS6 WMI兼容
DISM /Online /Disable-Feature /FeatureName:IIS-WMICompatibility /Remove
- 底层依赖:IIS Metabase、IIS 基础组件;和 wmic.exe 无关
- 作用:注册
root\MicrosoftIISv2这个老旧 IIS6 WMI 命名空间,只给读取 IIS 站点、应用池的老脚本使用 - 边界:哪怕你没有安装 WMIC(WMIC~~~~ 未安装),只要开启了 IIS-WMICompatibility,WMI 命名空间
root\MicrosoftIISv2依然存在;反过来,装了 WMIC,不装 IIS-WMICompatibility,也完全不影响wmic.exe查询操作系统、硬件、进程等常规 WMI 类。
3. 对比表
| 项目 | WMIC~~~~(Capability) | IIS-WMICompatibility(Feature) |
|---|---|---|
| 对象 | wmic.exe 命令行工具 | IIS6 旧版 WMI 命名空间 Provider |
| 分类 | Capability(按需包) | Feature(Windows 功能) |
| 系统范围 | Win10/11 + Server2022/2025 | 仅服务器系统(带 IIS 角色) |
| 依赖 | WMI 核心栈 winmgmt | IIS Metabase 组件 |
| 查询方式 | Get-WindowsCapability | DISM /Get-Features |
| 业务用途 | CMD 调用 WMI 通用查询 | 老旧脚本读取 IIS6 配置 |
| 两者关系 | 互相独立,互不依赖 | 互相独立,互不依赖 |
4. 常见踩坑点
- ❌ 错误:Server 里开启 IIS-WMICompatibility = 开启 WMIC ✅ 正确:两个东西独立开关;开启 IIS-WMICompat,系统里依然没有 wmic.exe,必须单独 Add-Capability 安装 WMIC~~~~。
- ❌ 错误:桌面 Win10/11 有 IIS-WMICompatibility ✅ 正确:桌面版 Windows 的 IIS 组件里不带 IIS-WMICompatibility 这个 Feature,该 Feature 仅存在于 Server 系统。
- ❌ 错误:WMIC 弃用 = WMI 底层 / IIS-WMICompatibility 一起弃用 ✅ 正确:仅废弃 wmic.exe 客户端;winmgmt 服务、WMI Provider、IIS-WMICompatibility(如需维护老 IIS 脚本仍可启用)底层组件继续保留。
5. Mermaid 逻辑关系图
flowchart LR
subgraph Windows系统
A[Capability:WMIC~~~~] -->|包含| A1[wmic.exe wmic.dll]
A1 -->|调用| W[winmgmt WMI服务]
B[Feature:IIS-WMICompatibility] -->|包含| B1[wmiis.dll]
B1 -->|注册命名空间| W
W --> C[各类WMI Provider]
end
A -.独立.-> B
Windows Capability(FoD,Features on Demand|按需能力包)
一句话定义:FoD 是 Windows 的可选组件包模型,组件名称格式形如
Name~~~~版本,由 CBS(基于组件的服务栈)管理;默认不内置在系统镜像,需要按需拉取 / 离线加载,WMIC~~~~ 就是典型 FoDMicrosoft ... 核心区分:Capability(FoD) ≠ Windows Feature(传统 Windows 功能 / 角色)
一、底层原理
FoD 是微软在 Win10 引入的按需组件交付模型,目标:精简默认系统镜像体积,减少基线镜像大小、减少月度更新包体积,需要时再安装。
- 系统本地只保留 FOD 元数据清单(
C:\Windows\servicing\FodMetadata),记录所有可用 Capability 名称、版本、依赖、支持架构 / SKU;不包含组件二进制文件博客园 - 执行
Add-Capability时,CBS/TrustedInstaller 按源优先级尝试获取.cab包:- 优先级 1:离线本地源(FoD ISO / 自定义本地仓库)
- 优先级 2:Windows Update / WSUS
- 获取 cab 包后,TrustedInstaller 校验签名、依赖关系,把文件部署到系统目录、写入 WinSxS,注册组件
Remove-Capability:删除二进制文件,保留元数据清单(以后还能重新安装,除非新版系统直接移除该 Capability 元数据,例如新版 Win11 删除 WMIC~~~~)
底层依赖栈
DISM / PowerShell(Dism模块)
↓
CBS(Component-Based Servicing)
↓
TrustedInstaller 服务(真正执行文件写入、组件注册)
↓
FOD元数据 + CAB组件包
二、命名格式(标志性 ~~~~ 分隔符)
格式:组件名~~~~版本 示例:
WMIC~~~~OpenSSH.Server~~~~0.0.1.0App.StepsRecorder~~~~0.0.1.0Language.Basic~~~~zh-CN~0.0.1.0
~~~~ 是 Capability 的标识分隔符,传统 Windows Feature(如 IIS-WMICompatibility)没有这种命名格式。
三、Capability(FoD) vs Windows Feature(传统系统功能)
| 项目 | Capability(FoD 按需能力包) | Windows Feature(传统系统功能) |
|---|---|---|
| 标识样式 | XXXX~~~~版本,带波浪号 |
普通名称 IIS-WMICompatibility,无波浪号 |
| 管理入口 | DISM /Add-Capability / Get-WindowsCapability PowerShell cmdlet |
DISM /Enable-Feature / Get-WindowsFeature |
| 存储基线 | 系统镜像不带二进制文件,仅元数据;按需下载 cab | 镜像内置所有文件,只是默认禁用,开启不需要下载包 |
| 适用场景 | 轻量工具、语言包、小工具:WMIC、OpenSSH、截图工具、手写识别 | 系统角色、大型组件:IIS、.NET3.5、Hyper-V、IIS-WMICompatibility |
| 卸载效果 | Remove 后,二进制文件被删除;元数据还在(只要系统版本没移除该 Capability) | Disable 只是关闭注册项,文件仍然保留在 WinSxS,不删除 |
| 适用系统 | Win10/11 + Server2022/2025 | 主要 Windows Server,桌面 Win10/11 少量 Feature(如.NET3.5) |
重点:WMIC 属于 Capability (FoD);IIS-WMICompatibility 属于传统 Windows Feature,二者两套管理体系
四、常用操作命令(WMIC 示例)
PowerShell(推荐)
# 查询本地所有Capability,过滤WMIC
Get-WindowsCapability -Online | Where-Object Name -match WMIC
# 安装WMIC
Add-WindowsCapability -Online -Name WMIC~~~~
# 卸载WMIC
Remove-WindowsCapability -Online -Name WMIC~~~~
DISM CMD
:: 安装
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
:: 卸载
DISM /Online /Remove-Capability /CapabilityName:WMIC~~~~
五、源优先级 & 离线部署边界
- 在线环境:默认优先 Windows Update;内网 WSUS 环境会走 WSUS
- 离线内网(不能联网):必须挂载对应版本的【语言和可选功能 ISO】,用
/source参数指定本地 FoD 仓库,否则安装报错找不到源
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~ /Source:D:\sources\SxS /LimitAccess
/LimitAccess:禁止访问 Windows Update,强制只用本地源
六、典型 FoD 清单参考
- WMIC~~~~:WMIC 命令行工具
- OpenSSH.Client~~~~:SSH 客户端
- OpenSSH.Server~~~~:SSH 服务端
- App.StepsRecorder~~~~:步骤记录器
- Language.*:各类语言基础包、OCR、语音识别包
七、FoD 边界 & 踩坑点
- 新版系统会直接移除 Capability 元数据:Win11 24H2 之后,系统 FodMetadata 里已经删掉
WMIC~~~~,就算离线 FoD ISO 也无法安装,这就是 WMIC 彻底淘汰的节点。传统 Feature 不会这样:IIS-WMICompatibility 只要有 IIS 角色,Feature 元数据一直存在,可以随时启用 / 禁用。
- 精简镜像风险:很多精简版 Windows 直接删除
FodMetadata目录,所有 FoD 全部无法安装。 - FoD 是组件包,不是服务开关:Remove-Capability 会物理删除 wmic.exe/wmic.dll;传统 Feature Disable 只是关闭,文件不动。
- FoD 和 Feature 可以互相配合,但没有从属关系:例如服务器上可以同时:
- 安装 FoD
WMIC~~~~(获得 wmic.exe) - 启用 Feature
IIS-WMICompatibility(获得 root\MicrosoftIISv2 WMI 命名空间) 两者独立,互不依赖。
- 安装 FoD
八、Mermaid 架构链路
flowchart LR
subgraph Windows CBS系统栈
A[管理员:DISM / Add-WindowsCapability] --> B[TrustedInstaller]
B --> C{FodMetadata元数据清单}
C -->|查找WMIC~~~~| D[获取WMIC.CAB包<br/>源:WU/WSUS/离线FoD ISO]
D --> E[解压部署 wmic.exe,wmic.dll 到系统目录 + WinSxS]
E --> F[Capability状态:Installed]
end
F --> G[wmic.exe 调用 wbemcli.dll → winmgmt WMI服务]
WMIC 被弃用主要是因为 PowerShell 提供了更强大的功能、更好的用户体验、更好的性能以及更广泛的跨平台支持。微软推荐 IT 管理员和开发者转向 PowerShell,以适应现代化的管理和自动化需求。
Windows 10,11 启用WMIC命令
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
Windows server 2022,2025 启用WMIC命令
DISM /Online /Enable-Feature /FeatureName:IIS-WMICompatibility /Al
Windows 10,11 禁用卸载WMIC命令
DISM /Online /Remove-Capability /CapabilityName:WMIC~~~
Windows server 2022,2025 禁用卸载WMIC命令
DISM /Online /Disable-Feature /FeatureName:IIS-WMICompatibility /Remove
windows server 2022 2025
查询命令:Dism /Online /Get-Features
部署映像服务和管理工具
版本: 10.0.26100.1150
映像版本: 10.0.26100.3194
程序包功能列表 : Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~10.0.26100.1
功能名称 : IIS-WMICompatibility
状态 : 已禁用
命令行启用WMIC功能
1、以管理身份打开CMD或powershell命令执行窗口,输入如下命令进行添加wmic操作:
|
PS C:\Users\Administrator> DISM /Online /Get-FeatureInfo /FeatureName:IIS-WMICompatibility 部署映像服务和管理工具 映像版本: 10.0.26100.3194 功能信息: 功能名称 : IIS-WMICompatibility 自定义属性: ServerComponent\Description : IIS 6 WMI 兼容性提供 Windows Management Instrumentation (WMI)脚本接口,以便从您在 WMI 提供程序中创建的脚本集以编程方式管理和自动执行 IIS 10.0 Web 服务器的任务。此服务包括用于管理站点的 WMI CIM Studio、WMI 事件 注册、WMI 事件查看器和 WMI 对象浏览器工具。 操作成功完成。 部署映像服务和管理工具 映像版本: 10.0.26100.3194 启用一个或多个功能 |
如果使用后需要禁用或卸载,可以执行如下命令:
DISM /Online /Disable-Feature /FeatureName:IIS-WMICompatibility /Remove
Windows 10,11,
命令行启用WMIC功能
1、以管理身份打开CMD或powershell命令执行窗口,输入如下命令进行添加wmic操作:
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
2、添加完成后,重新执行wmic命令后正常无报错。
如果使用后需要卸载,可以执行如下命令:
DISM /Online /Remove-Capability /CapabilityName:WMIC~~~
WMIC 组件深度解构(Win10/11 Capability vs Windows Server IIS‑WMICompatibility)
分析框架:底层原理|依赖文件|依赖关系|逻辑链路|配套链|边界|自动化 关键区分:
- 桌面端 Win10/Win11:
WMIC属于 Windows 可选能力 (Capability),CapabilityName:WMIC~~~~- Windows Server 2022/2025:
IIS‑WMICompatibility(IIS 6 WMI兼容性),属于服务器角色功能 (Feature),二者不是同一个组件,经常混淆。
⚠️重要澄清:
WMIC.exe是WMI 命令行客户端工具;IIS‑WMICompatibility= IIS6 WMI 脚本提供程序,只用于 IIS 管理,≠ wmic.exe 命令本体; 很多运维文档错误把两者混为一谈。
一、底层原理
1)桌面 Windows10 / Windows11:WMIC 可选能力 Capability
WMIC = WMI Command‑line,WMI 的旧版命令行交互工具。 从 Windows 10 21H2 开始,WMIC 从系统默认安装移除,转为按需可选能力(Windows Capability)。
- 底层:
wmic.exe是封装 WMI COM 接口 (winmgmt.dll) 的命令行外壳,本身不实现 WMI 服务,只是客户端。 - Capability 机制:按需下载 / 安装小包,存储在系统包库;不需要完整角色,桌面系统无 IIS 依赖。
- 注册表:能力状态记录在
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Capabilities。
2)Windows Server 2022 / 2025:IIS‑WMICompatibility
IIS‑WMICompatibility(IIS6 WMI 兼容性组件)
- 作用范围:专门给 IIS Web 服务器提供 IIS6 兼容的 WMI 管理提供程序,用于脚本读写 IIS 站点、应用池配置。
- 该功能不安装 wmic.exe! wmic.exe 在 Server 系统依然需要单独 Capability 安装。
- 依赖 IIS 元数据库兼容层
Web‑Metabase;是 IIS 管理角色子服务。
常见误区:开启
IIS‑WMICompatibility,在 Server 里直接敲wmic依旧提示命令不存在;必须额外安装 WMIC 能力包。
核心对照表
表格
| 项目 | Win10/Win11 WMIC Capability | Server IIS‑WMICompatibility |
|---|---|---|
| 组件对象 | wmic.exe WMI 通用命令行客户端 | IIS 6 兼容 WMI 提供程序(仅管理 IIS) |
| 类型 | Windows Capability 可选能力 | Server Role Feature 角色功能 |
| 标识名 | WMIC~~~~ |
IIS‑WMICompatibility |
| 是否依赖 IIS | ❌不依赖 IIS | ✅强依赖 IIS Web‑Metabase 组件 |
| 安装后产出 | %SystemRoot%\System32\wbem\wmic.exe |
注册 IIS 专属 WMI 命名空间 root\MicrosoftIISv2 |
二、依赖文件
① Win10/11 WMIC Capability(wmic.exe)
表格
| 文件路径 | 作用 |
|---|---|
C:\Windows\System32\wbem\wmic.exe |
主可执行程序 |
C:\Windows\System32\wbem\wmic.dll |
WMIC 内部逻辑库 |
winmgmt.dll |
WMI COM 接口;WMI 服务winmgmt(winmgmt.exe) |
wbemprox.dll |
WMI COM 代理 |
底层完全依赖系统 WMI 服务(Winmgmt);WMI 服务本身是操作系统内置,不会随 WMIC 卸载而删除,卸载只是删除 wmic.exe 外壳程序。
② Server IIS‑WMICompatibility (IIS6 WMI 兼容)
表格
| 文件路径 | 作用 |
|---|---|
wmiis.dll |
IIS6 WMI 提供程序 DLL,注册到 WMI |
metabase.dll |
IIS 旧元数据库兼容层(依赖 Web‑Metabase) |
winmgmt.exe |
WMI Windows 管理规范服务 |
三、依赖关系|调用链路
1)Win10/11 安装 WMIC Capability
DISM /Online /Add‑Capability /CapabilityName:WMIC~~~~
↓
Dism 访问 CBS(基于组件的服务),查询本地包存储 / Windows Update获取WMIC能力包
↓
CBS 将 wmic.exe、wmic.dll释放到 %windir%\System32\wbem
↓
更新Capabilities注册表记录为已安装
↓
✅无需重启;直接执行 wmic 即可;底层调用系统常驻WMI服务winmgmt
卸载链路:
DISM /Online /Remove‑Capability /CapabilityName:WMIC~~~~
↓
CBS移除wmic.exe/wmic.dll;标记Capability已卸载
↓
输入wmic → “不是内部或外部命令”
↓
⚠️WMI服务winmgmt 继续保留运行,不受影响
2)Windows Server 2022‑2025 启用 IIS‑WMICompatibility
DISM /Online /Enable‑Feature /FeatureName:IIS‑WMICompatibility /All
↓
/All 参数自动安装前置依赖:Web‑Metabase(IIS元数据库兼容层)
↓
注册 wmiis.dll WMI提供程序,注册root\MicrosoftIISv2 WMI命名空间
↓
提示:NeedRestart=Possible;多数场景无需重启,部分环境要求重启WMI服务
↓
脚本可通过WMI操作IIS;⚠️**wmic.exe命令仍然缺失,需要单独安装WMIC Capability**
禁用卸载:
DISM /Online /Disable‑Feature /FeatureName:IIS‑WMICompatibility /Remove/Remove:移除有效载荷;不只是标记禁用。
权限约束
- DISM 操作 Capability / Feature 必须管理员权限;普通用户执行报错。
- WMIC 只是客户端;WMI 远程查询还受 DCOM、WMI 防火墙、CIM 安全权限控制。
- IIS‑WMICompatibility 必须IIS 角色已经部分安装;裸 Server 直接启用会失败,因为缺少父组件 Web‑Mgmt‑Compat。
四、逻辑链路 & 边界(高频踩坑)
✅正确认知
- WMIC(wmic.exe)已经被微软弃用;推荐迁移至 Get‑WmiObject / Get‑CimInstance PowerShell Cmdlet。
- Win10/11 默认不带 wmic.exe,必须 Add‑Capability;WMI 服务本体一直存在。
- Server:IIS‑WMICompatibility ≠ wmic.exe。很多运维踩坑:装了 IIS‑WMICompatibility,执行 wmic 依旧提示命令不存在,要额外安装
WMIC~~~~能力。
❌边界风险汇总
表格
| 边界项 | 现象说明 |
|---|---|
| 组件混淆 | 开启 IIS‑WMICompatibility,并不能得到 wmic.exe 命令;两者完全独立 |
| 离线镜像 | 离线环境 Add‑Capability 需要本地源;无 Internet 会下载失败,必须提供 Windows ISO 能力源 |
| 弃用状态 | WMIC 为弃用组件,微软不再修复漏洞;新项目优先 CIM (PowerShell) |
| 依赖隔离 | 卸载 WMIC Capability,不会停止、删除系统 WMI 服务 winmgmt,PowerShell Get‑CimInstance 不受任何影响 |
| IIS 依赖边界 | IIS‑WMICompatibility 必须依赖 Web‑Metabase;裸 Server 无 IIS 时,不加/All参数会启用失败 |
| 重启标记 | Possible 代表 “可能需要重启”;大部分场景无需重启,少数服务器环境需要重启 WMI 服务或者整机 |
| 命名空间隔离 | IIS‑WMICompatibility 只新增root\MicrosoftIISv2;普通 WMI 命名空间 root\cimv2 属于系统自带,不受此 Feature 控制 |
五、配套链
dism.exe:主部署工具,操作 Capability / Windows Feature;- CBS (Component Based Servicing):组件服务,负责 Capability 安装卸载;
- WMI 服务
winmgmt:Windows Management Instrumentation,WMIC、CIM 底层公共依赖; - 组策略:可以阻止安装可选 Windows Capability,会拦截 WMIC 安装;
- 离线介质:企业离线环境,需要
/Source参数指向本地 ISO 的\sources\sxs源; - PowerShell 替代命令:
Get‑CimInstance(推荐现代)Get‑WmiObject(已弃用)
六、自动化流水线脚本
1)Windows10 / Windows11 自动化(管理员 PowerShell)
# 查询WMIC Capability状态
DISM /Online /Get‑CapabilityInfo /CapabilityName:WMIC~~~~
# 安装 WMIC
DISM /Online /Add‑Capability /CapabilityName:WMIC~~~~
# 卸载 WMIC
# DISM /Online /Remove‑Capability /CapabilityName:WMIC~~~~
离线环境需要追加源参数示例:
DISM /Online /Add‑Capability /CapabilityName:WMIC~~~~ /Source:D:\sources\sxs /LimitAccess
2)Windows Server 2022 / 2025
# 查询 IIS 6 WMI兼容组件状态
DISM /Online /Get‑FeatureInfo /FeatureName:IIS‑WMICompatibility
# 启用IIS‑WMICompatibility,自动拉取依赖Web‑Metabase
DISM /Online /Enable‑Feature /FeatureName:IIS‑WMICompatibility /All
# 【注意:Server想要wmic.exe,还需要额外安装WMIC能力!】
DISM /Online /Add‑Capability /CapabilityName:WMIC~~~~
# 卸载IIS‑WMICompatibility,移除负载
# DISM /Online /Disable‑Feature /FeatureName:IIS‑WMICompatibility /Remove
3)PowerShell 检测脚本(跨桌面 + 服务器,判断 wmic.exe 是否可用)
# 检测wmic.exe是否存在
if(Test‑Path "$env:SystemRoot\System32\wbem\wmic.exe"){
Write‑Host "WMIC 已安装"
}else{
Write‑Host "WMIC 未安装"
}
4)Unattend.xml 应答文件示例
Win10/11 离线部署添加 WMIC Capability
<settings pass="oobeSystem">
<component name="Microsoft‑Windows‑WindowsFoundation">
<Capabilities>
<Capability Name="WMIC~~~~"/>
</Capabilities>
</component>
</settings>
Server 启用 IIS‑WMICompatibility
<settings pass="specialize">
<component name="Microsoft‑Windows‑Server‑Roles">
<RoleServcies>
<RoleService Name="IIS‑WMICompatibility" State="Enabled"/>
</RoleServcies>
</component>
</settings>
补充运维提示
- 安全视角:WMIC 是历史攻击面,生产服务器如无业务脚本依赖,建议卸载移除 WMIC 能力;优先迁移 CIM (PowerShell)。
- IIS‑WMICompatibility 仅用于老旧 IIS6 时代遗留脚本;新 IIS 管理推荐使用
IISAdministrationPowerShell 模块。

浙公网安备 33010602011771号