微軟的祕密工具wmic

執行“wmic”命令啓動WMIC命令行環境。這個命令可以在XP或 .NET Server的標準命令行解釋器(cmd.exe)、Telnet會話或“運行”對話框中執行。這些啓動方法可以在本地使用,也可以通過.NET Server終端服務會話使用。
  第一次執行WMIC命令時,Windows首先要安裝WMIC,然後顯示出WMIC的命令行提示符。在WMIC命令行提示符上,命令以交互的方式執行。
wimic的運行方式可以有兩種法:
1、搞入wimic進入後輸入命令運行,鍵入wimic後出現wmic:root\cli>時你就可以輸入命令了,如輸入process顯示所有的進程。不知道有什麼命令時可以輸入用/?來顯示幫助。exit 是退出交互模式。具體幫助用法如下:
命令行幫助
  命令 例子 說明
  /? 或 -? 顯示所有全局開關和別名的語法
  / /? /user /? 顯示指定全局開關的信息
  /? class /? 顯示某個命令的信息
  /? memcache /? 顯示某個別名的信息
  /? temperature get /? 顯示別名與動詞組合的信息
  /?:Full irq get /?:Full 顯示動詞的幫助信息
如:我要查看process命令的幫助,鍵入:process/?後顯示如下:
wmic:root\cli>process /?
PROCESS - 進程管理。
提示: BNF 的別名用法。
(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb clause>].
用法:
PROCESS ASSOC [<format specifier>]
PROCESS CALL <method name> [<actual param list>]
PROCESS CREATE <assign list>
PROCESS DELETE
PROCESS GET [<property list>] [<get switches>]
PROCESS LIST [<list format>] [<list switches>]
2、用wimic 後面直接跟命令運行,如wmic process 就顯示了所有的進程了。這兩種運行方法就是:交互模式(Interactive mode)和非交互模式(Non-Interactive mode)
下面我們能過一些實例來說明用法:
=====================================================================
顯示進程的詳細信息
輸入 process where name="maxthon.exe" list full
將顯示出mxathon.exe進程所有的信息如下:
CommandLine="D:\mytools\Maxthon2\Maxthon.exe"
CSName=CHINA-46B1E8590
Description=Maxthon.exe
ExecutablePath=D:\mytools\Maxthon2\Maxthon.exe
ExecutionState=
Handle=684
HandleCount=2296
InstallDate=
KernelModeTime=3495000000
MaximumWorkingSetSize=1413120
MinimumWorkingSetSize=204800
Name=Maxthon.exe
OSName=Microsoft Windows XP Professional|C:\WINDOWS|
OtherOperationCount=307814
OtherTransferCount=60877207
PageFaults=1367971
PageFileUsage=89849856
ParentProcessId=1924
PeakPageFileUsage=90091520
PeakVirtualSize=385802240
PeakWorkingSetSize=94031872
Priority=8
PrivatePageCount=89849856
ProcessId=684
QuotaNonPagedPoolUsage=43496
QuotaPagedPoolUsage=257628
QuotaPeakNonPagedPoolUsage=72836
QuotaPeakPagedPoolUsage=271372
ReadOperationCount=85656
ReadTransferCount=121015982
SessionId=0
Status=
TerminationDate=
ThreadCount=57
UserModeTime=1778750000
VirtualSize=353206272
WindowsVersion=5.1.2600
WorkingSetSize=93716480
WriteOperationCount=30940
WriteTransferCount=24169673
******************************************************************************
停止、暫停和運行服務功能
啓動服務startservice,
停止服務stopservice,
暫停服務pauseservice
Service where caption="windows time" call stopservice ------停止服務
Service where caption="windows time" call startservice ------啓動服務
Service where name="w32time" call stopservice          ------停止服務,注意name和caption的區別。
caption 顯示服務名name服務名稱,如: telnet服務的顯示名稱是telnet 服務名稱是tlntsvr,還有Windows Time服務的名稱是w32time 顯示名稱是"Windows Time"要用引號引起來,主要是有一個空格。
好了具體看一下:輸入Service where caption="windows time" call startservice後有一個確認輸入y就可以了,返回ReturnValue = 0;表示成功
wmic:root\cli>Service where caption="windows time" call startservice
執行 (startservice'>\\CHINA-46B1E8590\ROOT\CIMV2:Win32_Service.Name="W32Time")->startservice()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
        ReturnValue = 0;
};
wmic:root\cli>
================================================================================================
顯示出BIOS信息 wmic bios list full
大家可能注意到了上面命令行中還有兩個參數list和full。list決定顯示的信息格式與範圍,它有Brief、Full、Instance、 Status、System、Writeable等多個參數,full只是它的一個參數,也是list的缺省參數,表示顯示所有的信息。其他幾個參數顧名思義,如Brief表示只顯示摘要信息,Instance表示只顯示對象實例,Status表示顯示對象狀態,Writeable表示只顯示該對象的可寫入的屬性信息等。
************************************************************************=====================
停止進程的操作
例如,執行下面的命令將關閉正在運行的QQ.exe:
例1、wmic process where name='QQ.exe' call terminate
命令運行結束後,WMIC命令行提示出如下結果:
C:\>wmic process where name='QQ.exe' call terminate
執行 (terminate'>\\CHINA-46B1E8590\ROOT\CIMV2:Win32_Process.Handle="728")->terminate()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
        ReturnValue = 0;
};
例2、wmic process where name="qq.exe" delete
命令運行結束後,WMIC命令行提示出如下結果:
C:\>wmic process where name="qq.exe" delete
刪除範例 \\CHINA-46B1E8590\ROOT\CIMV2:Win32_Process.Handle="2820"
範例刪除成功。
======================================================================
列出所有的進程   wmic process
==================================================================
連接遠程電腦
★★連接遠程的電腦,不過好象對要開一些相應的服務
wmic /node:"192.168.203.131" /password:"" /user:"administrator"
BIOS - 基本輸入/輸出服務 (BIOS) 管理
★★查看bios版本型號
wmic bios get Manufacturer,Name
WMIC設置IP地址
★★配置或更新IP地址:
wmic nicconfig where index=0 call enablestatic("192.168.1.5"), ("255.255.255.0") ;index=0說明是配置網絡接口1。
配置網關(默認路由):
wmic nicconfig where index=0 call setgateways("192.168.1.1"),(1)
COMPUTERSYSTEM - 計算機系統管理
★★查看系統啓動選項,boot的內容
wmic COMPUTERSYSTEM get SystemStartupOptions
★★查看工作組/域
wmic computersystem get domain
★★更改計算機名abc爲123
wmic computersystem where "name='abc'" call rename 123
★★更改工作組google爲MyGroup
wmic computersystem where "name='google'" call joindomainorworkgroup "","","MyGroup",1
CPU - CPU 管理
★★查看cpu型號
wmic cpu get name
DATAFILE - DataFile 管理
★★查找e盤下test目錄(不包括子目錄)下的cc.cmd文件
wmic datafile where "drive='e:' and path='\\test\\' and FileName='cc' and Extension='cmd'" list
★★查找e盤下所有目錄和子目錄下的cc.cmd文件,且文件大小大於1K
wmic datafile where "drive='e:' and FileName='cc' and Extension='cmd' and FileSize>'1000'" list
★★刪除e盤下文件大小大於10M的.cmd文件
wmic datafile where "drive='e:' and Extension='cmd' and FileSize>'10000000'" call delete
★★刪除e盤下test目錄(不包括子目錄)下的非.cmd文件
wmic datafile where "drive='e:' and Extension<>'cmd' and path='test'" call delete
★★複製e盤下test目錄(不包括子目錄)下的cc.cmd文件到e:\,並改名爲aa.bat
wmic datafile where "drive='e:' and path='\\test\\' and FileName='cc' and Extension='cmd'" call copy "e:\aa.bat"
★★改名c:\hello.txt爲c:\test.txt
wmic datafile "c:\\hello.txt" call rename c:\test.txt
★★查找h盤下目錄含有test,文件名含有perl,後綴爲txt的文件
wmic datafile where "drive='h:' and extension='txt' and path like '%\\test\\%' and filename like '%perl%'" get name
DESKTOPMONITOR - 監視器管理
★★獲取屏幕分辨率
wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth
DISKDRIVE - 物理磁盤驅動器管理
★★獲取物理磁盤型號大小等
wmic DISKDRIVE get Caption,size,InterfaceType
ENVIRONMENT - 系統環境設置管理
★★獲取temp環境變量
wmic ENVIRONMENT where "name='temp'" get UserName,VariableValue
★★更改path環境變量值,新增e:\tools
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;e:\tools"
★★新增系統環境變量home,值爲%HOMEDRIVE%%HOMEPATH%
wmic ENVIRONMENT create name="home",username="<system>",VariableValue="%HOMEDRIVE%%HOMEPATH%"
★★刪除home環境變量
wmic ENVIRONMENT where "name='home'" delete
FSDIR - 文件目錄系統項目管理
★★查找e盤下名爲test的目錄
wmic FSDIR where "drive='e:' and filename='test'" list
★★刪除e:\test目錄下除過目錄abc的所有目錄
wmic FSDIR where "drive='e:' and path='\\test\\' and filename<>'abc'" call delete
★★刪除c:\good文件夾
wmic fsdir "c:\\good" call delete
★★重命名c:\good文件夾爲abb
wmic fsdir "c:\\good" rename "c:\abb"
LOGICALDISK - 本地儲存設備管理
★★獲取硬盤系統格式、總大小、可用空間等
wmic LOGICALDISK get name,Description,filesystem,size,freespace
NIC - 網絡界面控制器 (NIC) 管理
OS - 已安裝的操作系統管理
★★設置系統時間
wmic os where(primary=1) call setdatetime 20070731144642.555555+480
PAGEFILESET - 頁面文件設置管理
★★更改當前頁面文件初始大小和最大值
wmic PAGEFILESET set InitialSize="512",MaximumSize="512"
★★頁面文件設置到d:\下,執行下面兩條命令
wmic pagefileset create name='d:\pagefile.sys',initialsize=512,maximumsize=1024
wmic pagefileset where"name='c:\\pagefile.sys'" delete
PROCESS - 進程管理
★★列出進程的核心信息,類似任務管理器
wmic process list brief
★★結束svchost.exe進程,路徑爲非C:\WINDOWS\system32\svchost.exe的
wmic process where "name='svchost.exe' and ExecutablePath<>'C:\\WINDOWS\\system32\\svchost.exe'" call Terminate
★★新建notepad進程
wmic process call create notepad
PRODUCT - 安裝包任務管理
★★安裝包在C:\WINDOWS\Installer目錄下
★★卸載.msi安裝包
wmic PRODUCT where "name='Microsoft .NET Framework 1.1' and Version='1.1.4322'" call Uninstall
★★修復.msi安裝包
wmic PRODUCT where "name='Microsoft .NET Framework 1.1' and Version='1.1.4322'" call Reinstall
SERVICE - 服務程序管理
★★運行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
SHARE - 共享資源管理
★★刪除共享
wmic SHARE where name="e$" call delete
★★添加共享
WMIC SHARE CALL Create "","test","3","TestShareName","","c:\test",0
SOUNDDEV - 聲音設備管理
wmic SOUNDDEV list
STARTUP - 用戶登錄到計算機系統時自動運行命令的管理
★★查看msconfig中的啓動選項
wmic STARTUP list
SYSDRIVER - 基本服務的系統驅動程序管理
wmic SYSDRIVER list
USERACCOUNT - 用戶帳戶管理
★★更改用戶administrator全名爲admin
wmic USERACCOUNT where name="Administrator" set FullName="admin"
★★更改用戶名admin爲admin00
wmic useraccount where "name='admin" call Rename admin00

================================================獲取補丁信息
★★查看當前系統打了哪些補丁
/node:legacyhost qfe get hotfixid
查看CPU當前的速度
★★cpu當前的速度
wmic cpu get CurrentClockSpeed
遠程計算機的遠程桌面連接
★★WMIC命令開啓遠程計算機的遠程桌面連接
執行wmic /node:192.168.1.2 /USER:administrator
PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
具體格式:
wmic /node:"[full machine name]" /USER:"[domain]\[username]"
PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
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.201.131 /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
for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="c:\\windows\\system32\\notepad.exe" get CreationDate^,LastAccessed^,LastModified') do (
set a=%%a
set b=%%b
set c=%%c
echo 文件: c:\windows\system32\notepad.exe
echo.
echo 創建時間: %a:~0,4% 年 %a:~4,2% 月 %a:~6,2% 日 %a:~8,2% 時 %a:~10,2% 分 %a:~12,2% 秒
echo 最後訪問: %b:~0,4% 年 %b:~4,2% 月 %b:~6,2% 日 %b:~8,2% 時 %b:~10,2% 分 %b:~12,2% 秒
echo 最後修改: %c:~0,4% 年 %c:~4,2% 月 %c:~6,2% 日 %c:~8,2% 時 %c:~10,2% 分 %c:~12,2% 秒
)
echo.
pause
wmic 全盤搜索某文件並獲取該文件所在目錄
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 PageFileSet set InitialSize="512",MaximumSize="512"
設置虛擬內存到E盤,並刪除C盤下的頁面文件,重啓計算機後生效
wmic PageFileSet create name="E:\\pagefile.sys",InitialSize="1024",MaximumSize="1024"
wmic PageFileSet where "name='C:\\pagefile.sys'" delete
獲得進程當前佔用的內存和最大佔用內存的大小:
wmic process where caption='filename.exe' get WorkingSetSize,PeakWorkingSetSize
以KB爲單位顯示
@echo off
for /f "skip=1 tokens=1-2 delims= " %%a in ('wmic process where caption^="conime.exe" get WorkingSetSize^,PeakWorkingSetSize') do (
set /a m=%%a/1024
set /a mm=%%b/1024
echo 進程conime.exe現在佔用內存:%m%K;最高佔用內存:%mm%K
)
pause
遠程打開計算機遠程桌面
wmic /node:%pcname% /USER:%pcaccount% PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
===========================================================================
批處理的api--WMIC學習體會
在這篇文章裏也許你看不到很多奇特有用的的實際例程,但是呢,授人以魚不如授人以漁,希望我的文章能讓你通俗易懂的瞭解一些wmic的基本知識,可以有一個學習的興趣,讓自己繼續深研一下wmic。
在WINDOWS\Help目下,wmic.chm文檔是這樣解釋wmi的:Windows Management Instrumentation (WMI) 是“基於 Web 的企業管理倡議 (WBEM)”(這是一個旨在建立在企業網絡上訪問和共享管理信息的標準的工業倡議)的 Microsoft 的實現。有關 WBEM 的詳細信息,請訪問 WBEM。XOXWMI 爲公用信息模型 (CIM)(該數據模型描述存在於管理環境中的對象)提供完整的支持。WMI 包括對象儲備庫和 CIM 對象管理器,其中對象儲備庫是包含對象定義的數據庫,對象管理器負責處理儲備庫中對象的收集和操作並從 WMI 提供程序 (WMI provider) 收集信息。WMI 提供程序 (WMI provider) 在 WMI 和操作系統、應用程序以及其他系統的組件之間充當中介。例如,註冊表提供程序從註冊表中提供信息,而 SNMP 提供程序則從 SNMP 設備中提供數據和事件。提供程序提供關於其組件的信息,也可能提供一些方法,這些方法可以操作可設置的組件、屬性,或者操作可能警告您在組件中要發生更改的事件。Windows Management Instrumentation 命令行 (WMIC) 向您提供了簡單的 Windows Management Instrumentation (WMI) 命令行界面,這樣即可利用 WMI 來管理運行 Windows 的計算機。WMIC 與現有命令行程序和實用程序命令相互操作,且很容易通過腳本或其他面向管理的應用程序來擴展 WMIC。
以上的這些說法太專業了,通俗一點講就是wmic.exe是一個命令行程序,可以用它這個接口來實現在命令行下直接管理計算機軟硬件等方方面面的操作,相當於批處理的api了。
一、wmic的基本命令格式簡析
經常看網上的相關資料的話,讀者可能會對wmic有一個基本的認識,不過看得越多估計會越糊塗,起碼我是這樣認爲的。其實簡單總結一下,命令格式就是“wmic+全局開關+別名+wql語句+動詞+副詞(或者說是動詞的參數)+動詞開關”而已了。這個命令格式可以根據需要來寫全或者寫部份格式,我這裏依次對格式的每個名稱按自己的理解來解釋一下,不過肯定完全不符合微軟專家的定義,只是讓大家弄懂它們而已。
wmic就是wmic.exe,位於windows目錄底下,是一個命令行程序。WMIC可以以兩種模式執行:交互模式(Interactive mode)和非交互模式(Non-Interactive mode),經常使用Netsh命令行的讀者應該非常熟悉這兩種模式。
交互模式。如果你在命令提示符下或通過"運行"菜單隻輸入WMIC,都將進入WMIC的交互模式,每當一個命令執行完畢後,系統還會返回到WMIC提示符下,如"Root\cli",交互模式通常在需要執行多個WMIC指令時使用。交互模式有時還會對一些敏感的操作要求確認,比如刪除操作,最大限度地防止用戶操作出現失誤。
非交互模式。非交互模式是指將WMIC指令直接作爲WMIC的參數放在WMIC後面,當指令執行完畢後再返回到普通的命令提示符下,而不是進入到WMIC上下文環境中。WMIC的非交互模式主要用於批處理或者其他一些腳本文件中,我在本文中一律用●非交互模式●示例。
開關有以下的全局開關,打入wmic.exe /?可以看到的(這裏我們先不討論每個開關的具體意思,具體用法看示例):

/NAMESPACE 別名使用的名稱空間路徑。
/ROLE 包含此別名定義的角色路徑。
/NODE 別名使用的服務器。
/IMPLEVEL 客戶模擬級別。
/AUTHLEVEL 客戶身份驗證級別。
/LOCALE 客戶應用的語言識別符。
/PRIVILEGES 啓用或禁用所有特權。
/TRACE 將調試信息輸出到 stderr。
/RECORD 將所有輸入命令和輸出寫入日誌。
/INTERACTIVE 設置或重設交互模式。
/FAILFAST 設置或重置 FailFast 模式。
/USER 會話期間使用的用戶。
/PASSWORD 用於會話登錄的密碼。
/OUTPUT 爲輸出重新定向指定模式。
/APPEND 爲輸出重新定向指定模式。
/AGGREGATE 設置或重置集合模式。
/AUTHORITY Specifies the <authority type> for the connection.
/?[:<BRIEF|FULL>] Usage information.

至於別名啦,就是給主板、服務、系統、進程啦這些和計算機相關的東東起了個英文名,在wmic.exe /?命令行下也可以看到。
wql語句和我們平常用的注入時的sql語句的語法幾乎是一模一樣,甚至更簡單。一般是where name="xxx" and 之類的,不過有時候要把name=“xxx"這樣的格式換成"name='xxx'"或者是where(name='xxx')這樣,反正正常情況下不行的話就換個寫法。
動詞呢,就那麼簡單幾個assoc、call、CREATE、DELETE、GET、LIST、SET,從英文名字上應當可以看出它們是用來幹什麼的。不過說實話,assoc我真的還沒用到過。
至於副詞(動詞的參數),就是得到用動詞+它的參數得到對象的屬性。像屬於list動詞的副詞,就是顯示個什麼樣的呀,例如顯示詳細狀態或簡要狀態。
動詞開關就好比顯示個橫表格式的或者顯示個豎表格式的或者輸出個什麼樣格式的文件,或者是幾秒來重複顯示信息等等,有的動詞並沒有開關。
二、一步一步來完成我們的wmic命令行
wmic裏有個別名是logicaldisk,就是對磁盤進行管理。我們先按照最簡單的格式來寫,在cmd命令行下輸入●wmic logicaldisk list●(wmic.exe+別名+list動詞),稍等一會兒屏幕上會出現本地硬盤的各式各樣的數據,看上去雜亂無章。這樣子太不方便看了,我們來改寫一下,改成●wmic logicaldisk list brief●,在list動詞後加個brief參數,也就是brief副詞,顯示的就會很整齊,效果如下:

DeviceID brief FreeSpace ProviderName Size VolumeName
A: 2
C: 3 2925694976 6805409792 WINXP
D: 3 1117487104 1759936512 WORK
E: 5

大家可能注意到了上面命令行中有動詞list和副詞brief。list動詞決定顯示的信息格式與範圍,它有Brief、Full、Instance、Status、System、Writeable等多個參數(副詞),full只是它的一個參數,也是list的缺省參數,表示顯示所有的信息。其他幾個參數顧名思義,如Brief表示只顯示摘要信息,Instance表示只顯示對象實例,Status表示顯示對象狀態,Writeable表示只顯示該對象的可寫入的屬性信息等。
我們再來把語句加點東東,在上邊磁盤返回信息當中的DeviceID的值爲3時表示是本地硬盤的分區,如果是5爲光區,爲2則是移動磁盤了。我們把語句改一下,加入wql語句,只顯示本地磁盤。語句改成●wmic logicaldisk where "DriveType=3" list brief●或者是●wmic logicaldisk where(DriveType=3) list brief●,顯示效果都是下邊的樣子:

DeviceID DriveType FreeSpace ProviderName Size VolumeName
C: 3 2925686784 6805409792 WINXP
D: 3 1117487104 1759936512 WORK

但是上邊的格式呢顯示的我們還是不太滿意,ProviderName不知是個什麼東東也給顯示出來了,我們只想要我們想要的東東,像卷標VolumeName之類的我們也不要它,再把語句改一下,換個get動詞,命令改爲●wmic logicaldisk where "DriveType=3" get DeviceID,Size,FreeSpace,Description,FileSystem●,返回信息如下:

DeviceID,Size,FreeSpace,Description,FileSystem
Description DeviceID FileSystem FreeSpace Size
本地固定磁盤 C: FAT32 2925686784 6805409792
本地固定磁盤 D: FAT 1117487104 1759936512

至於get動詞後面跟的參數你可以先用list來查看一下就明白了。好了,這回可以得到我們想要的結果了。不過命令裏的開關我們還沒用到呢,加幾個全局開關吧。先來加個/OUTPUT吧,讓它把顯示信息輸出到一個文件中,命令如下:●wmic /output:a.html logicaldisk where "DriveType=3" get DeviceID,Size,FreeSpace,Description,FileSystem●,這樣一來剛纔屏幕上返回的信息就到當前目錄的a.htm裏了。但是a.htm打開看看後,根本就像一個記事本一樣,沒有任何樣式,看起來也不美觀,我們給它指定一個樣式,就要用到format這個動詞開關了,命令改爲●wmic /output:a.html logicaldisk where "DriveType=3" get DeviceID,Size,FreeSpace,Description,FileSystem /format:htable●,這樣一來a.htm裏就花花綠綠的用表格顯示我們本地磁盤的信息了。也許你要問,htable是什麼東東,其實這是一個文件,你想要上邊的a.html什麼格式,就可以在C:\WINDOWS\system32\wbem這裏找一個你想要的格式的文件名,具體有以下一些文件:

CSV
HFORM
HMOF
HTABLE
HXML
LIST
TABLE
VALUE
htable-sortby
htable-sortby.xsl
texttablewsys
texttablewsys.xsl
wmiclimofformat
wmiclimofformat.xsl
wmiclitableformat
wmiclitableformat.xsl
wmiclitableformatnosys
wmiclitableformatnosys.xsl
wmiclivalueformat
wmiclivalueformat.xsl

還有人也許要問了,我只想顯示c:盤的,不要其它盤的可以做到嗎?當然可以,這就要用到wql語句的name這個變量了。你可以先用●wmic logicaldisk list Instance●看到name的具體名字,然後更改上邊的wql語句。好啦,我們改一下,改成●wmic /output:a.html logicaldisk where "name='c:'" get DeviceID,Size,FreeSpace,Description,FileSystem /format:htable或者wmic /output:a.html logicaldisk where(name='c:') get DeviceID,Size,FreeSpace,Description,FileSystem /format:htable●就可以了。值得注意的是我們在DriveType=3的沒有用到單引號是因爲3是數字型的,而c:是字符型的所以要用單引號或雙引號。不過要注意的是如果在wql語句中用到了and,請用()或者""把語句引起來。
這樣一來,我們最後的語句基本符合了我文章開頭說的wmic的命令格式是“wmic+開關+別名+wql語名+動詞+副詞(或者說是動詞的參數)+動詞開關”。不過wmic可不只能對本機操作,還可以對遠程機器進行操作,我們再來加三個全局開關,讓我們的這條命令對遠程格式進行操作,命令就是:
●WMIC /node:"192.168.8.100" /user:"administrator" /password:"lcx" /output:a.html logicaldisk where "name='c:'" get DeviceID,Size,FreeSpace,Description,FileSystem /format:htable●
其中node開關表示對哪臺機器進行訪問,user和password當然是遠程機器的用戶名和密碼了,這個命令有了以上的講解,大家應當一目瞭然了吧。到現在爲止,我們的動詞只用到了get和list,我們再加一個set來改變c:盤的卷標。命令如下:●WMIC logicaldisk where "name='c:'" set VolumeName ="lcx"●,這樣大家就更進一步清楚了這個格式的用法。寫了這麼多字,也許你要問到我wmic最有用的開關是什麼,當然是"?"了,如果那個命令不會用,可以用wmic /? 、WMIC logicaldisk /?、WMIC logicaldisk list /?、WMIC logicaldisk set /?這樣儀次來查詢用法。
三、總結
wmic是很強大的,像開2003的3389一句話就可以做到:●wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1●。不過呢,
這篇文章估計會有讓觀衆上當受騙的感覺,一個wmic的磁盤命令寫了這麼長的篇幅,具體的奇淫技巧卻沒有看到。不過我想有了本文的基礎,你研究wmic其它的別名像進程、服務、bios、主板呀,都會有一個切入點,具體的好的技巧如開3389等就要靠大家去研究發現了。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章