WMIC是Windows内置的命令行管理工具,用于查询系统信息、配置设置和管理进程/服务,它本身就是系统的一部分,运行时拥有执行命令的用户权限,并非外部入侵程序。
WMIC (Windows Management Instrumentation Command-line) 本身并不是一个用于“进入”或“登录”到系统(无论是本地还是远程)的工具。 它无法像远程桌面 (RDP) 或 SSH 那样提供一个交互式的命令行或图形界面让你“进入”并操作另一个系统。
WMIC 的核心功能是:查询和管理 Windows 系统(本地或远程)的配置信息、状态和设置。 它是一个极其强大的命令行工具,用于从 Windows Management Instrumentation (WMI) 存储库中提取大量关于硬件、软件、操作系统组件、进程、服务等的详细信息。
当人们说“用 WMIC 进入系统”时,通常指的是:
- 连接到本地系统:查询你当前登录的这台电脑的详细信息。
- 连接到远程系统:在你有足够权限的前提下,查询网络上的另一台 Windows 计算机的信息,这不是远程控制,只是信息查询。
如何使用 WMIC 命令查询系统信息
以下是使用 WMIC 的基本步骤和常用命令示例,所有操作都在命令提示符 (CMD) 或 PowerShell 中执行。
打开命令提示符 (CMD) 或 PowerShell
- 按下
Win + R
键,输入cmd
或powershell
,然后按回车。 - 或者,在开始菜单中搜索 “cmd” 或 “PowerShell” 并打开。
基本 WMIC 命令结构
WMIC 命令通常遵循以下模式:
wmic [全局开关] [别名] [动词] [动词参数] [输出重定向]
- 全局开关 (Global Switches): 影响整个 WMIC 会话的行为,
/NODE:"computername"
: 指定要查询的远程计算机名(需要权限),查询本地系统可省略。/USER:"domain\username"
: 指定用于连接远程计算机的用户名(需要权限)。/PASSWORD:"password"
: 指定用于连接远程计算机的密码(注意安全风险,通常不推荐直接在命令中输入密码,系统会提示输入)。/OUTPUT:filename
: 将输出重定向到文件(如/OUTPUT:C:\info.txt
)。/FORMAT:format
: 指定输出格式(如LIST
,TABLE
,CSV
)。
- 别名 (Alias): 代表你要查询的 WMI 类(对象类型)。
os
: 操作系统信息cpu
: CPU 信息memorychip
: 物理内存信息diskdrive
: 物理硬盘信息logicaldisk
: 逻辑分区信息 (C:, D: 等)bios
: BIOS 信息baseboard
: 主板信息process
: 进程信息service
: 服务信息product
: 已安装软件信息qfe
: 已安装的补丁 (Hotfix) 信息nic
: 网络适配器信息computersystem
: 计算机系统信息(型号、制造商等)
- 动词 (Verbs): 对别名执行的操作,最常用的是:
GET
: 获取指定属性的值,这是最常用的动词。LIST
: 列出别名对象的所有可用属性(通常结合/FORMAT:LIST
使用)。CALL
: 调用别名对象的方法(执行特定操作,需谨慎)。
- 动词参数 (Verb Parameters): 指定
GET
哪些属性或CALL
哪个方法,多个属性用逗号分隔。 - 输出重定向 (Output Redirection): 如
> filename.txt
将结果保存到文件。
常用查询示例 (查询本地系统)
-
查询操作系统信息 (名称、版本、构建号、安装日期):
wmic os get Caption, Version, BuildNumber, InstallDate
-
查询 CPU 信息 (名称、制造商、最大时钟速度、核心数、线程数):
wmic cpu get Name, Manufacturer, MaxClockSpeed, NumberOfCores, NumberOfLogicalProcessors
-
查询物理内存信息 (容量、速度、制造商):
wmic memorychip get Capacity, Speed, Manufacturer
(注意:
Capacity
以字节为单位,除以1073741824
(1024^3) 可得到 GB) -
查询物理硬盘信息 (型号、接口类型、大小):
wmic diskdrive get Model, InterfaceType, Size
(注意:
Size
以字节为单位) -
查询逻辑磁盘信息 (盘符、文件系统、总大小、可用空间):
wmic logicaldisk get DeviceID, FileSystem, Size, FreeSpace
(注意:
Size
和FreeSpace
以字节为单位) -
查询 BIOS 信息 (版本、制造商、序列号):
wmic bios get SMBIOSBIOSVersion, Manufacturer, SerialNumber
-
查询主板信息 (制造商、型号、序列号):
wmic baseboard get Manufacturer, Product, SerialNumber
-
查询计算机系统信息 (型号、制造商、系统类型):
wmic computersystem get Model, Manufacturer, SystemType
-
列出所有正在运行的进程 (ID、名称、路径、占用内存):
wmic process get ProcessId, Name, ExecutablePath, WorkingSetSize
(
WorkingSetSize
是当前占用的物理内存字节数) -
查询特定服务状态 (如
wuauserv
– Windows Update 服务):wmic service where "name='wuauserv'" get Name, State, StartMode
-
查询已安装的软件列表 (名称、版本、供应商):
wmic product get Name, Version, Vendor
(注意:此命令可能较慢,且主要显示通过 MSI 安装的程序)
-
查询已安装的补丁列表 (Hotfix ID、安装日期):
wmic qfe get HotFixID, InstalledOn
查询远程系统 (需要权限!)
要查询远程计算机 RemotePC
(假设在同一个域内,或你有该机的本地管理员账号),基本语法如下:
wmic /NODE:"RemotePC" /USER:"Domain\UserName" [别名] [动词] [参数]
- 执行命令后,系统会提示你输入该用户的密码。强烈建议不要在命令中直接使用
/PASSWORD
参数,以免密码泄露。 - 示例:获取远程计算机
Server01
的操作系统信息(使用域管理员AdminUser
):wmic /NODE:"Server01" /USER:"YourDomain\AdminUser" os get Caption, Version
(输入密码后按回车)
重要提示:远程查询的前提条件
- 网络连通性: 本地计算机必须能通过网络访问到远程计算机(通常需要开放 TCP 端口 135 和动态 RPC 端口)。
- 防火墙设置: 远程计算机的防火墙必须允许 WMI 连接(通常对应“Windows Management Instrumentation (WMI-In)”入站规则)。
- 用户权限: 你使用的账户必须在远程计算机上拥有足够的权限(通常是远程计算机的本地管理员组成员),对于域环境,域管理员通常具有此权限。
- WMI 服务: 远程计算机上的
Winmgmt
(Windows Management Instrumentation) 服务必须正在运行。 - DCOM 权限: 可能需要配置远程计算机的 DCOM 权限(更高级的配置,通常在企业域环境中由管理员处理)。
输出格式控制
- 列表格式 (清晰易读,默认):
wmic os list brief /FORMAT:LIST
- 表格格式 (适合多属性):
wmic process get Name, ProcessId, WorkingSetSize /FORMAT:TABLE
- CSV 格式 (方便导入电子表格):
wmic logicaldisk get DeviceID, Size, FreeSpace /FORMAT:CSV > disks.csv
将结果保存到文件
使用 >
或 /OUTPUT
开关:
wmic bios get SerialNumber > bios_sn.txt
wmic /OUTPUT:C:\system_info.txt os get *
安全警告与最佳实践 (E-A-T 重点)
- WMIC 不是远程控制工具: 重申:WMIC 主要用于信息查询,它不能让你像使用 RDP 或 SSH 那样“进入”并交互式操作远程系统,任何声称用 WMIC “完全控制”或“入侵”系统的说法都是误导或利用了其他漏洞。
- 权限最小化: 仅在必要时使用管理员权限运行 WMIC,避免在日常账户下执行高权限 WMIC 命令。
- 密码安全: 绝对不要在脚本或命令行中明文写入
/PASSWORD
参数,始终让系统提示输入密码,考虑使用更安全的远程管理方法(如 PowerShell RemotingEnter-PSSession
)或凭据管理工具。 - 理解命令: 在执行任何 WMIC 命令(尤其是
CALL
动词或修改性命令)之前,务必了解其作用,错误的命令可能导致系统不稳定或数据丢失,本文主要介绍安全的GET
查询。 - 防火墙与网络策略: 在企业环境中,开放 WMI 端口(135 和动态 RPC)可能带来安全风险,应遵循最小权限原则和严格的网络分段策略,考虑使用更现代、更安全的替代方案(如 PowerShell CIM cmdlets)。
- WMIC 已弃用: Microsoft 已宣布 WMIC 工具从 Windows 10 版本 21H1 和 Windows 11 开始弃用 (Deprecated),它目前仍然可用,但未来的 Windows 版本可能会移除它。强烈建议学习和迁移到更强大、更安全的 PowerShell 及其 WMI/CIM cmdlets (如
Get-WmiObject
或更优的Get-CimInstance
),PowerShell 提供了更丰富的功能、更好的对象处理、管道支持和更安全的远程处理机制 (WinRM)。 - 信息敏感性: WMIC 可以查询到敏感信息(如序列号、安装的软件、补丁状态、运行的服务等),确保只在授权和安全的上下文中使用,并妥善处理查询结果。
WMIC 是一个功能强大的命令行工具,用于深入查询 Windows 系统(本地或远程)的硬件、软件和配置信息,它的核心价值在于信息获取,而非“进入”或控制,掌握常用的 wmic [别名] get [属性]
命令结构,可以快速有效地收集大量系统数据,使用时务必牢记安全准则,尤其是远程连接时的权限和密码管理,鉴于 WMIC 已被弃用,积极学习并转向 PowerShell 进行系统管理是更面向未来的选择。
引用说明:
- 本文所描述的 WMIC 功能、语法和行为基于 Microsoft Windows 操作系统内置的
wmic.exe
命令行工具。 - WMIC 弃用的信息,参考了 Microsoft 官方文档和公告(Windows 10 和 Windows 11 的版本更新说明)。
- 安全最佳实践参考了通用的信息安全原则和 Microsoft WMI 和远程管理的安全指南。
- WMI 类 (别名) 和属性的具体含义可参考 Microsoft 官方的 WMI 类参考文档 (例如在 MSDN 或 Microsoft Learn 上搜索特定的 WMI 类名)。
- (文章创建日期: 2025年10月27日)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5314.html