WMIC

WMIC(Windows Management Instrumentation Command-line),即Windows管理规范命令行。并声称使用WMIC,再配合其他现存的命令行工具,管理员几乎可以完成所有的管理任务,而不必再过多地依赖那些图形界面。

WMI 是微软基于Web的企业管理(WBEM)这一理念与标准的具体实现,并对 CIM (Common Information Model,公用信息模型)提供完整的支持。WMI 由符合 CIM 标准的对象储备库(Object Repository)和 CIM 对象管理器(WMI Object Manager)组成,其中对象储备库是对象定义的数据库,对象管理器负责处理储备库中对象的收集和操作,并从 WMI 提供程序(WMI Provider)收集信息。WMI 提供程序在 WMI 与操作系统组件、应用程序和其他系统之间充当中间人角色,两者通过 WMI 提供程序交换信息。WMI 提供程序的主要作用就是为 WMI 提供下层对象的相关信息,以及允许 WMI 通过它对下层对象进行管理。例如,注册表提供程序从注册表中提供信息,而 SNMP 提供程序则从 SNMP 设备中提供数据和事件等。

WMI 被许多计算机管理工具所用,如Microsoft Systems Management Server、Microsoft Health Monitor和Microsoft Operations Manager等。

使用 WMIC,你不但可以管理本地计算机,而且可以管理同一Windows域内的所有远程计算机(需要必要的权限),而被管理的远程计算机不必事先安装 WMIC,只需要支持 WMI 即可。

WMIC 有一个能够分析、解释和执行从命令行接收的别名(Alias)的引擎,它是一个可执行文件,名为WMIC.exe,这个文件通常位于 c:\windows\system32\wbem 文件夹中,该程序运行于用户当前登录的计算机上。任何对 WMIC 命令行的扩展性能都经过别名文件定义或者注册。别名又称友好名称(Friendly Names),通过 MOF (Management Object Format,管理对象格式)格式定义。WMIC 引擎接收到输入的命令后,先进行分析。如果命令是一个别名,WMIC 会从当前操作命名空间(比如root\cli)调用该别名的定义,应用当前的环境设置(如目标命名空间),并将别名命令与它的原始命令进行对应,然后执行。

具体来说,你可以使用 WMIC 实现如下的管理任务:

  1. 本地计算机管理
  2. 远程单个计算机管理
  3. 远程多个计算机管理
  4. 使用远程会话的计算机管理(如Telnet)
  5. 使用管理脚本的自动管理

只有本地管理员组成员才能够启动 WMIC,由于 WMIC 本质上是 WMI 的一个客户端,因此 WMIC 的安全受限于 WMI 的安全。当 WMIC 在一个远程会话中被使用时,如Telnet、终端服务等,缺省情况下,它使用发起此会话的用户的安全上下文。在使用 WMIC 管理一个远程计算机之前,WMIC 会 Ping 一下远程计算机以确定其状态。

WMIC 有两种运行方式:

  • 交互模式(Interactive mode)
  • 非交互模式(Non-Interactive mode)

运行的先决条件:

  • 启动Windows Management Instrumentation服务,开放TCP135端口。
  • 本地安全策略的“网络访问:本地帐户的共享和安全模式应设为“经典-本地用户以自己的身份验证”。

交互模式

如果你在命令提示符下或通过"运行"菜单只输入 WMIC,都将进入 WMIC 的交互模式,每当一个命令执行完毕后,系统还会返回到 WMIC 提示符下,如 wmic:root\cli 。交互模式通常在需要执行多个 WMIC 指令时使用。当你需要先执行 CONTEXT 指令查看环境变量,再使用 OS 指令查看当前操作系统消息时,就可以使用交互模式。交互模式有时还会对一些敏感的操作要求确认,比如删除操作,最大限度地防止管理员出现失误。

注意: 如果值包含特殊字符(如 "-" 或 "/"),则将开关值两边加上双引号。

c:\>wmic
wmic:root\cli>
# syntax
# wmic:root\cli>command </parameter>

# 查看环境变量
wmic:root\cli>context

NAMESPACE             : root\cimv2
ROLE                  : root\cli
NODE(S)               : YANGYY-WIN10
IMPLEVEL              : IMPERSONATE
[AUTHORITY            : N/A]
AUTHLEVEL             : PKTPRIVACY
LOCALE                : ms_804
PRIVILEGES            : ENABLE
TRACE                 : OFF
RECORD                : N/A
INTERACTIVE           : ON
FAILFAST              : OFF
OUTPUT                : STDOUT
APPEND                : STDOUT
USER                  : N/A
AGGREGATE             : ON

# 查看当前操作系统消息
wmic:root\cli>os

BootDevice                     BuildNumber        BuildType
Caption                        CodeSet            CountryCode ...
\Device\HarddiskVolume1        14393              Multiprocessor Free
Microsoft Windows 10 企业版     936                86 ...

如果不了解指令,可以输入用 /? 来显示帮助信息。exit 或者 quit 退出交互模式。

非交互模式

非交互模式是指将 WMIC 指令直接作为 WMI C的参数放在 WMIC 后面,当指令执行完毕后再返回到普通的命令提示符下,而不是进入到 WMIC 上下文环境中。WMIC 的非交互模式主要用于批处理或者其他一些脚本文件中,比如上面的 OS 指令在非交互模式下就可以使用下面的方式执行:

c:\>wmic os

WMIC全局开关

可以使用以下全局开关:

开关 说明
/NAMESPACE 别名在其上操作的命名空间的路径。
/ROLE 包含别名定义的角色的路径。
/NODE 别名在其上操作的服务器。
/IMPLEVEL 客户端模拟级别。
/AUTHLEVEL 客户端身份验证级别。
/LOCALE 客户端应使用的语言 ID。
/PRIVILEGES 启用或禁用所有权限。
/TRACE 将调试信息输出到 stderr。
/RECORD 记录所有输入命令和输出内容。
/INTERACTIVE 设置或重置交互模式。
/FAILFAST 设置或重置 FailFast 模式。
/USER 会话期间要使用的用户。
/PASSWORD 登录会话时要使用的密码。
/OUTPUT 指定输出重定向模式。
/APPEND 指定输出重定向模式。
/AGGREGATE 设置或重置聚合模式。
/AUTHORITY 指定连接的 <授权类型>。
/?`[:<BRIEF\ FULL>]` 用法信息。(Markdown语法约束,实际没有"\")

有关特定全局开关的详细信息,请键入: switch-name /?

/node /?

显示全局开关状态

wmic context

连接远程机器 /NODE

wmic /node:"192.168.1.20" /user:"domain\administrator" /password:"123456"

输出 /OUTPUT /FORMAT

wmic /output:"c:\temp\process.html" process list /format:htable

可以使用的格式:

  • textvaluelist
  • hform
  • htable
  • csv
  • xml

WQL查询

WQL 是 WMI 中的查询语言,WQL 的全称是 WMI Query Language。语法与 SQL 非常相似。基本语法:

SELECT property[, property] FROM class [WHERE clause]

查询示例:

# 查询硬盘分区 
SELECT * FROM Win32_LogicalDisk WHERE drivetype=3

# 查询共享目录 
SELECT * FROM Win32_share

WMIC 支持 WQL 查询,但是语法上有些差异。语法格式:

别名: 等同于 from class;
where: 等同于 where;
谓词:包括 call、create、delete、get、list。get 等同于 select;

不同别名的谓词可能不同,具体谓词可以使用 alias /? 查询。

(<别名> [WMI 对象] | <别名> [<路径 where>] | [<别名>] <路径 where>) [<谓词子句>]。

示例:

由于 WMIC 以空格区隔参数,所以 where 条件中不能包含空格。如下面的示例中不能输入为: where Name = "dllhost.exe"

wmic process where Name="dllhost.exe" get Name, CommandLine, Priority

WMIC指令

可以使用以下别名:

别名(CLASS) 说明
ALIAS 对本地系统上可用别名的访问
BASEBOARD 基板(也称为主板或系统板)管理。
BIOS 基本输入/输出服务(BIOS)管理。
BOOTCONFIG 启动配置管理。
CDROM CD-ROM 管理。
COMPUTERSYSTEM 计算机系统管理。
CPU CPU 管理。
CSPRODUCT SMBIOS 中的计算机系统产品信息。
DATAFILE 数据文件管理。
DCOMAPP DCOM 应用程序管理。
DESKTOP 用户的桌面管理。
DESKTOPMONITOR 桌面监视器管理。
DEVICEMEMORYADDRESS 设备内存地址管理。
DISKDRIVE 物理磁盘驱动器管理。
DISKQUOTA 用于 NTFS 卷的磁盘空间使用量。
DMACHANNEL 直接内存访问(DMA)通道管理。
ENVIRONMENT 系统环境设置管理。
FSDIR 文件系统目录项管理。
GROUP 组帐户管理。
IDECONTROLLER IDE 控制器管理。
IRQ 中断请求线路(IRQ)管理。
JOB 提供对使用计划服务安排的作业的访问。
LOADORDER 定义执行依赖关系的系统服务的管理。
LOGICALDISK 本地存储设备管理。
LOGON 登录会话。
MEMCACHE 缓存内存管理。
MEMORYCHIP 内存芯片信息。
MEMPHYSICAL 计算机系统的物理内存管理。
NETCLIENT 网络客户端管理。
NETLOGIN 网络登录信息(属于特定用户)管理。
NETPROTOCOL 协议(及其网络特征)管理。
NETUSE 活动网络连接管理。
NIC 网络接口控制器(NIC)管理。
NICCONFIG 网络适配器管理。
NTDOMAIN NT 域管理。
NTEVENT NT 事件日志中的项目。
NTEVENTLOG NT 事件日志文件管理。
ONBOARDDEVICE 主板(系统板)中内置的通用适配器设备的管理。
OS 已安装操作系统的管理。
PAGEFILE 虚拟内存文件交换管理。
PAGEFILESET 页面文件设置管理。
PARTITION 物理磁盘的已分区区域的管理。
PORT I/O 端口管理。
PORTCONNECTOR 物理连接端口管理。
PRINTER 打印机设备管理。
PRINTERCONFIG 打印机设备配置管理。
PRINTJOB 打印作业管理。
PROCESS 进程管理。
PRODUCT 安装程序包任务管理。
QFE 快速修复工程。
QUOTASETTING 卷上的磁盘配额设置信息。
RDACCOUNT 远程桌面连接权限管理。
RDNIC 对特定网络适配器的远程桌面连接管理。
RDPERMISSIONS 特定远程桌面连接的权限。
RDTOGGLE 远程打开或关闭远程桌面侦听程序。
RECOVEROS 操作系统出现故障时将从内存收集的信息。
REGISTRY 计算机系统注册表管理。
SCSICONTROLLER SCSI 控制器管理。
SERVER 服务器信息管理。
SERVICE 服务应用程序管理。
SHADOWCOPY 卷影副本管理。
SHADOWSTORAGE 卷影副本存储区域管理。
SHARE 共享资源管理。
SOFTWAREELEMENT 系统上安装的软件产品元素的管理。
SOFTWAREFEATURE SoftwareElement 的软件产品子集的管理。
SOUNDDEV 声音设备管理。
STARTUP 当用户登录到计算机系统时自动运行的命令的管理。
SYSACCOUNT 系统帐户管理。
SYSDRIVER 基本服务的系统驱动程序管理。
SYSTEMENCLOSURE 物理系统外壳管理。
SYSTEMSLOT 物理连接点(包括端口、插槽和外设以及专用连接点)的管理。
TAPEDRIVE 磁带驱动器管理。
TEMPERATURE 温度传感器(电子温度计)数据管理。
TIMEZONE 时区数据管理。
UPS 不间断电源(UPS)管理。
USERACCOUNT 用户帐户管理。
VOLTAGE 电压传感器(电子电压表)数据管理。
VOLUME 本地存储卷管理。
VOLUMEQUOTASETTING 将磁盘配额设置与特定磁盘卷相关联。
VOLUMEUSERQUOTA 每用户存储卷配额管理。
WMISET WMI 服务操作参数管理。

有关特定别名的详细信息,请键入: alias /?

proccess /?

查看别名可用属性

proccess get /?
proccess list /?
# 目前不明确具体用法
CLASS:可获取完整 WMI 架构。
PATH:可获取完整 WMI 对象路径。

process-进程管理

# 获取进程列表,可用参数:
# [brief | full | instance | io | memory | statistics | status | system]
wmic proccess list brief

# 创建新进程 
wmic process call create notepad

# 删除指定进程: 
wmic process where name="qq.exe" call terminate

job-任务管理

wmic job call create "notepad.exe",0,0,true,false,********154800.000000+480
wmic job call create "explorer.exe",0,0,1,0,********154600.000000+480

results matching ""

    No results matching ""