首页/系统/Windows 运维速查/wmic 系统信息查询
CMD 常用命令74 条

wmic 系统信息查询

WMI 的命令行外壳:一条命令取硬件、磁盘、进程命令行的结构化信息;已被标记弃用,但存量环境仍大量使用。

Windows 运维速查系统更新于 2026-10-13

wmic 是什么

wmic 是 WMI 的命令行外壳,用类似 SQL 的简单语法(别名 + get + where)一次取出硬件、系统、进程、服务的结构化信息,直接可读、可直接塞进批处理做判断。它最大的特点是不用装任何东西就能拿到「进程的完整命令行」「磁盘剩余空间」这类关键字段。微软已把 WMIC 标记为弃用并逐步转为可选功能,新系统上可能默认不可用,新建脚本应当用 PowerShell 的 Get-CimInstance 系列替代,存量脚本则要评估迁移。

基本信息

适用平台Windows(7 到 11、Server),版本越新越可能默认未安装
语法wmic 别名 get 属性 [where "条件"] [/format:csv|table|list] [/value]
常用别名os、cpu、computersystem、bios、logicaldisk、diskdrive、process、service、product、nic、share、useraccount、qfe
远程查询/node:主机 /user:账户 /password:口令 前缀开关
注意事项命令行里带 /password 会留在命令历史与进程列表里,尽量避免
状态已弃用,建议迁移到 CIM cmdlet

典型使用场景

  • 资产盘点:一次性导出主机型号、CPU、内存、系统版本与序列号
  • 磁盘预警:读取各逻辑盘容量与剩余空间,写进巡检脚本
  • 进程排查:查进程的完整命令行,确认是谁在用某个端口或参数
  • 服务核查:按名称或状态筛选服务,批量核对是否按预期运行
  • 热补丁核对:用 qfe 别名列出已安装补丁,比对基线

常用示例

常用示例
wmic os get caption,version,buildnumber                # 系统名称、版本与构建号
wmic computersystem get model,manufacturer             # 主机型号与厂商
wmic cpu get name,numberofcores                         # CPU 型号与核心数
wmic logicaldisk get caption,size,freespace             # 各盘容量与剩余空间
wmic process where "name='java.exe'" get processid,commandline   # 进程完整命令行
wmic service where "name like 'MySQL%%'" get name,state,startmode  # 服务状态
wmic qfe get hotfixid,installedon                       # 已安装补丁列表
wmic product get name,version                           # 已安装程序(较慢,可用 table 输出)
wmic /format:csv os get caption,version                 # 结构化输出便于落盘
wmic process where "processid=1234" delete             # 结束指定进程(危险,先确认 PID)

别名与替代命令对照

别名取什么PowerShell 替代
os操作系统名称、版本、构建号Get-CimInstance Win32_OperatingSystem
logicaldisk逻辑盘容量与剩余空间Get-CimInstance Win32_LogicalDisk 或 Get-Volume
process进程 PID、命令行、内存Get-CimInstance Win32_Process / Get-Process
service服务名称、状态、启动方式Get-CimInstance Win32_Service / Get-Service
product已安装软件清单Get-CimInstance Win32_Product(同样较慢)
WMIC 的参数细节与原版有差异:where 条件里字符串用单引号包住,整体再用双引号;百分号在批处理中要写成 %% 转义。查询语句写错通常不报语法错,而是给出空结果,先在命令行单独验证再固化到脚本。
别名是常用 WMI 类的简写,例如 process 等价于 Win32_Process。别名覆盖不到的类要走完整路径:wmic path Win32_StartupCommand get name,command。

迁移到 CIM 的等价写法

迁移到 CIM 的等价写法
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber
Get-CimInstance Win32_Process -Filter "Name='java.exe'" | Select-Object ProcessId, CommandLine
Get-CimInstance Win32_Service -Filter "Name LIKE 'MySQL%'" | Select-Object Name, State, StartMode
Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object DeviceID, Size, FreeSpace
wmic process ... delete、wmic product ... call uninstall 这类调用会真的执行操作且没有确认提示。用 PID 时需要先核对进程命令行,避免误杀同名进程或用错 PID。

易错点

  • 把 WMIC 写进长期运维脚本:新系统上该组件可能默认不存在,脚本直接报「不是内部或外部命令」
  • 远程查询时把口令写在命令行里,会出现在进程列表与历史记录中,应改用带凭据的会话方式
  • where 条件的引号嵌套写错(双引号内用单引号)导致静默返回空结果,被误判为「没有该进程/服务」
  • wmic product 查询极慢且会触发部分 MSI 的修复动作,资产盘点时应换注册表或 CIM 的其它方式
  • 在批处理里漏写百分号转义(%%),where 条件被 CMD 提前展开导致查询条件失效

数据来源与参考

  • Microsoft Learn:WMIC 弃用说明
  • Microsoft Learn:WMI 与 CIM cmdlet 对照

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌