WMIC(Windows Management InstrumentationCommand Line)
windows除了cmd ,powershell以外另一個更為強大的命令執行shell:
windows最令網管詬病的地方就是命令行沒有unix和linux強大。但這種情況正在不斷改觀,windows命令行也越來越強大了。其中,微軟耗費大量精力打造的wmi就是一例。
運行wmic的先決條件:
a. 啟動Windows Management Instrumentation服務,開放TCP135端口。
b. 本地安全策略的“網絡訪問: 本地帳戶的共享和安全模式”應設為“經典-本地用戶以自己的身份驗證”。
運行方式
1、cmd中直接輸入wmic打頭的命令
wmic os get name
2、從開始里啟動wmic,然后在wmic里輸入 cpu get name
Microsoft Windows Management Instrumentation (WMI)。中文名字叫Windows管理規范。從Windows 2000開始,WMI(Windows 管理規范)就內置於操作系統中,並且成為了Windows系統管理的重要組成部分。
WMI能做什么?
WMI不僅可以獲取想要的計算機數據,而且還可以用於遠程控制。遠程控制計算機可是大家都喜歡的東西。很多遠程監視控制類軟件通常的做法是:在遠程計算機上運行服務端后台程序,在本地計算機上運行一個客戶器端控制程序,通過這二個程序的勾結來實現對計算機的遠程控制。這種作法的缺點是十分明顯的,當服務端程序關了,這種遠程監控就無法實現了,因為沒有內線了。而WMI實現的遠程監視和控制完全不需要另外裝什么服務端的東西,系統默認就將WMI服務給開了。具體說來,WMI的本領如下:
1.獲取本地和遠程計算機的硬件軟件信息。
2.監視本地和遠程計算機的軟件和服務等運行狀況。
3.控制本地和遠程計算機的軟件和服務運行。
4.高級應用。
如何訪問WMI?
當我們知道WMI的某些本領后,我們已經很想知道如何認識他並利用他了。利用WMI有許多途徑,簡單說來有三種了:
1.通過微軟給我們提供的各種工具來實現普通查詢和操作。主要包括命令提示符下面的WMIC,還有就是微軟給我們提供的WMI TOOL,大家可以到微軟的網站上免費下載,當然我也可以給大家免費提供。
2.通過自己編寫腳本來實現更靈活操作。要想真正靈活實用,對WSH腳本的熟悉是必須的,當然如果你不熟悉也沒有關系,稍后我會給大家詳細解釋的。
3. 通過編寫我們自己的程序來訪問並操作它。什么語言都行。如果用.NET類程序要簡單些了,如果用VC等要復雜些了,起碼我是這么認為的。
4.還有個訪問它的方法,就是到它的一個巢穴。在C:\WINDOWS\system32\wbem目錄中的東西都和它有密切聯系,有日志和各種工具,在里面你可以找到很多答案的。不過這些東西一般都不適合我們新手玩了,感覺有點嚇人。
WMIC是Windows Management Instrumentation Commandline的簡稱,WMIC擴展WMI,提供了從命令行接口和批命令腳本執行系統管理的支持。為WMI名稱空間提供了一個強大的、友好的命令行接口。有了WMIC,WMI就顯的平易近人了。
wmic 獲取進程名稱以及可執行路徑:
wmic process get name,executablepath
wmic 刪除指定進程(根據進程名稱):
wmic process where name="qq.exe" call terminate
或者用
wmic process where name="qq.exe" delete
wmic 刪除指定進程(根據進程PID):
wmic process where pid="123" delete
wmic 創建新進程
wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe"
在遠程機器上創建新進程:
wmic /node:192.168.1.10 /user:administrator /password:123456 process call create cmd.exe
關閉本地計算機
wmic process call create shutdown.exe
重啟遠程計算機
wmic /node:192.168.1.10/user:administrator /password:123456 process call create "shutdown.exe -r -f -m"
更改計算機名稱
wmic computersystem where "caption='%ComputerName%'" call rename newcomputername
更改帳戶名
wmic USERACCOUNT where "name='%UserName%'" call rename newUserName
wmic 結束可疑進程(根據進程的啟動路徑)
wmic process where "name='explorer.exe' and executablepath<>'%SystemDrive%\\windows\\explorer.exe'" delete
wmic 獲取物理內存
wmic memlogical get TotalPhysicalMemory|find /i /v "t"
獲得系統版本信息
wmic datafile where Name='c:\\windows\\explorer.exe' get Manufacturer,Version,Filename
獲得系統進程
wmic process list full 注意:
這里的full也可以換成brief(簡潔)
獲得硬件信息(這里以cpu為例)
wmic cpu get name,caption,maxclockspeed,description
將結果輸出到d盤的1.txt里面
wmic /output:D:\1.txt cpu get name
wmic 獲取硬盤固定分區盤符:
wmic logicaldisk where "drivetype=3" get name
wmic 獲取硬盤各分區文件系統以及可用空間:
wmic logicaldisk where "drivetype=3" get name,filesystem,freespace
wmic 獲取進程名稱以及可執行路徑:
wmic process get name,executablepath
wmic 刪除指定進程(根據進程名稱):
wmic process where name="qq.exe" call terminate
或者用
wmic process where name="qq.exe" delete
wmic 刪除指定進程(根據進程PID):
wmic process where pid="123" delete
wmic 創建新進程
wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe"
在遠程機器上創建新進程:
wmic /node:192.168.1.10 /user:administrator /password:123456 process call create cmd.exe
關閉本地計算機
wmic process call create shutdown.exe
重啟遠程計算機
wmic /node:192.168.1.10/user:administrator /password:123456 process call create "shutdown.exe -r -f -m"
更改計算機名稱
wmic computersystem where "caption='%ComputerName%'" call rename newcomputername
更改帳戶名
wmic USERACCOUNT where "name='%UserName%'" call rename newUserName
wmic 結束可疑進程(根據進程的啟動路徑)
wmic process where "name='explorer.exe' and executablepath<>'%SystemDrive%\\windows\\explorer.exe'" delete
wmic 獲取物理內存
wmic memlogical get TotalPhysicalMemory|find /i /v "t"
wmic 獲取文件的創建、訪問、修改時間
@echo off
'wmic datafile where name^="c:\\windows\\system32\\notepad.exe" get CreationDate^,LastAccessed^,LastModified
wmic 全盤搜索某文件並獲取該文件所在目錄
wmic datafile where "FileName='qq' and extension='exe'" get drive,path
for /f "skip=1 tokens=1*" %i in ('wmic datafile where "FileName='qq' and extension='exe'" get drive^,path') do (set "qPath=%i%j" &@echo %qPath:~0,-3%)
獲取屏幕分辨率
wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth
獲取共享資源(包括隱藏共享)
WMIC share list brief
獲取U盤盤符,並運行U盤上的QQ.exe
@for /f "skip=1 tokens=*" %i in ('wmic logicaldisk where "drivetype=2" get name') do (if not "%i"=="" start d:\qq.exe)
獲得進程當前占用的內存和最大占用內存的大小:
wmic process where caption='filename.exe' get WorkingSetSize,PeakWorkingSetSize
更改現有工作組為指定的工作組
wmic computersystem Where "name='計算機名稱' call UnjoinDomainOrWorkgroup
退出所在域
wmic computersystem Where "name='計算機名稱'" call joindomainorworkgroup "",1,"域名稱","域管理員密碼","域管理員用戶名"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
開2003的3389
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call
SetAllowTSConnections 1
遠程打開計算機遠程桌面
wmic /node:%pcname% /USER:%pcaccount% PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
添加的計划任務,wmic添加的同樣AT命令也是可以看到
wmic job call create "sol.exe",0,0,true,false,********154800.000000+480
wmic job call create "sol.exe",0,0,1,0,********154600.000000+480
這兩句是相同的,TRUE可以用1表示,同樣的FALSE可以用0值表示,時間前為何用八個星號,這是WMIC的特性,他顯示時間的方式是YYYYMMDDHHMMSS.MMMMMM+時區 ,可是,我們並不需要指定年份和月份還有天,所以用*星號來替代
在wmic下查看BIOS信息
wmic bios list full
wmic還有停止、暫停和運行服務的功能:
啟動服務startservice,停止服務stopservice,暫停服務pauseservice。
具體的命令使用格式就是:
wmic Service where caption=”windows time” call stopservice
●--停止服務
wmic Service where caption=”windows time” call startservice
●--啟動服務
wmic Service where name=”w32time” call stopservice
●--停止服務,注意name和caption的區別。
遠程創建進程
wmic
/node:109.254.2.102 /user:"rdgad\administrator" /password:"1234"
process call create commandline="cmd.exe /k echo xxxxx|clip.exe"
WMIC檢測電腦最大可支持的內存:
1)點“開始”——在“運行”框中輸入CMD,按回車鍵;
2)在命令窗口中輸入wmic memphysical get maxcapacity,按回車鍵;3)此時系統會給出一串以千字節為單位的數字,把該數字換算成GB單位;換算方法:得到的數字/1024/1024
如上,33554432/1024/1024=32GB;
即最大可支持的內存容量為32GB。