大家可能注意到了上面命令行中有動詞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等就要靠大家去研究發現了。