WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具) ,提供了从命令行接口和批命令脚本执行系统管理的支持。在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,例如SMS,或者使用WMI的脚本编程API,或者使用象CIM Studio之类的工具。如果不熟悉C++之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要用WMI管理系统是很困难的。WMIC改变了这种情况。
WMIC比WMI简单、直观得多,这主要是由于使用了别名。别名机制获取用户在命令行上输入的一些简单命令,按照预定义的方式操作WMI名称空间,例如根据一个简单的WMIC别名Get命令构造出一个复杂的WMI查询语言(WQL)命令。从这个意义上看,别名是用户和名称空间之间一个简化操作的中间层。例如,如果在WMIC命令行上执行下面这个简单的WMIC命令,就可以获得用户帐户的基本信息。
执行“wmic”命令启动WMIC命令行环境。这个命令可以在XP或.NETServer的标准命令行解释器(cmd.exe)、Telnet会话或“运行”对话框中执行。这些启动方法可以在本地使用,也可以通过.NET Server终端服务会话使用。
第一次执行WMIC命令时,Windows首先要安装WMIC,然后显示出WMIC的命令行提示符。在WMIC命令行提示符上,命令以交互的方式执行。例如,执行下面的命令将关闭正在运行的Outlook:
process where name='outlook.exe' call terminate
命令运行结束后,WMIC命令行提示符重新出现。
wmic的运行方式:
在“运行”或dos窗口中中输入 wmic 进入,出现 wmic:root\cli> 时你就可以输入命令了
1、命令 /? 显示帮助信息
2、命令 process 显示所有的进程对应的应用程序的名称以及路径等相关信息
3、命令 process where name="cmd.exe" list full 显示指定进程程序cmd.exe详细信息
4、命令 process where name='cmd.exe' call terminate 关闭正在运行的cmd.exe进程或应用程序
5、命令 exit 是退出交互模式
键入wmic后出现 wmic:root\cli> 时你就可以输入命令了,如输入process显示所有的进程。不知道有什么命令时可以输入用 /? 来显示帮助。exit 是退出交互模式。具体帮助用法如下:
批处理的应用
@echo off
REM 声明采用 936 简体中文编码GBK
chcp 936
rem 查看当前电脑系统版本
cls
ver | find "6.1." > NUL && goto win7
ver | find "6.2." > NUL && goto win8
ver | find "6.3." > NUL && goto win8.1
ver | find "10." > NUL && goto win10
:win7
@echo 当前系统为:win7
goto end
:win8
@echo 当前系统为:win8
goto end
:win8.1
@echo 当前系统为:win8.1
goto end
:win10
@echo 当前系统为:win10
goto end
@echo 不能获取当前操作系统版本
:end
echo 【查看当前电脑信息】
for /f "delims== tokens=2" %%i in ('wmic os get caption /value') do SET CAPTION=%%i
echo 当前操作系统为:%CAPTION%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic os get osarchitecture /value') do SET OSBIT=%%i
echo 系统类型:%OSBIT%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic os get csname /value') do SET CSNAME=%%i
echo 当前计算机名为:%CSNAME%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic cpu get name /value') do SET PROC=%%i
echo CPU型号:%PROC%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic computersystem get numberoflogicalprocessors /value') do SET PROCESSORNUM=%%i
echo CPU核心数:%PROCESSORNUM%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic bios get softwareelementid /value') do SET BIOSVER=%%i
echo BIOS版本号:%BIOSVER%
echo -----------------
set /a totalMem=16777216+1
for /f "skip=1" %%i in ('wmic os get TotalVisibleMemorySize') do (
if %%i geq 0 set totalMem=%%i
)
rem 转换KB为GB单位
set /a memorySize=%totalMem%/1024/1024
echo 物理内存为: %memorySize% GB
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic bios get serialnumber /value') do SET SERVICETAG=%%i
echo 系统序列号:%SERVICETAG%
echo -----------------
for /f "delims== tokens=3" %%i in ('wmic computersystem get username /value') do SET USERNAME=%%i
echo 当前登录账户名称为:%USERNAME%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic path Win32_DesktopMonitor /value') do SET MONITOR=%%i
echo 即插即用监视器:%MONITOR%
echo -----------------
for /f "delims== tokens=2" %%i in ('WMIC path Win32_VideoController get Name /value') do SET GRAPHICCARD=%%i
echo 显示适配器:%GRAPHICCARD%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic sounddev get productname /value') do SET AUDIODEVICE=%%i
echo 声卡信息:%AUDIODEVICE%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic cdrom get caption /value') do SET CDROM=%%i
echo 光驱信息:%CDROM%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic path win32_pointingdevice get hardwaretype /value') do SET MOUSE=%%i
echo 鼠标接口:%MOUSE%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic path win32_keyboard get description /value') do SET KEYBOARD=%%i
echo 键盘接口:%KEYBOARD%
echo -----------------
echo 硬盘信息 文件类型 剩余空间 盘符 总大小
wmic LOGICALDISK get name,filesystem,size,freespace,Description
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic path Win32_Printer get Name /value') do SET Printer=%%i
echo 打印机:%Printer%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic nicconfig get dhcpserver /value') do SET DHCP=%%i
echo DHCP服务:%DHCP%
echo -----------------
for /f "delims== tokens=2" %%i in ('wmic ntdomain get dnsforestname /value') do SET DOMAIN=%%i
echo 域控制信息:%DOMAIN%
echo -----------------
for /f "delims== tokens=2" %%i in ('WMIC Path Win32_Battery Get status /value') do SET BATTERYSTATUS=%%i
echo 系统实例:%BATTERYSTATUS%
echo -----------------
::运行spooler服务
wmic SERVICE where name="Spooler" call startservice
::停止spooler服务
wmic SERVICE where name="Spooler" call stopservice
::暂停spooler服务
wmic SERVICE where name="Spooler" call PauseService
::更改spooler服务启动类型[auto|Disabled|Manual] 释[自动|禁用|手动]
wmic SERVICE where name="Spooler" set StartMode="auto"
::删除服务
wmic SERVICE where name="test123" call delete
::更改用户administrator全名为admin
wmic USERACCOUNT where name="Administrator" set FullName="admin"
::更改用户名admin为admin00
wmic useraccount where "name='admin" call Rename admin00
echo.
echo.
echo.
pause