WMIC 入門指導

早在一年以前研究批處理的時候,我就很深切地體會到了WMIC在做系統工程方面有多大的益處。這種益處體現在高度的人性化、互動性和其強大的功能,在批處理方面也大有用武之地。例如,如果要查詢explorer.exe實際所在的路徑(就是一般說的進程映像路徑),無需調用Process Explorer這樣的軟件,也無需在任務管理器中選擇顯示指定列,然後費力去尋找具體的某一條,直接在命令行執行如下命令:

wmic process where(description='explorer.exe')

就能得到所需要的信息。再比如,將計算機名由ihenry-pc改成lemon-pc,

wmic computersystem where "name='ihenry-pc'" call rename lemon-pc

應該說這種簡便性是無可替代的。近日突然想起系統研究WMIC,遂從technet網站上面查到了零散的一些材料,將他們組織起來,截取相對基礎的部分,得到下面這篇文章。如果您是系統工程方面的專家請繞行,如果是普通用戶,強烈建議讀完本文,對日常系統維護有着很大幫助。

1、WMIC的表現形式

WMIC其實就是WMI用命令行完成的版本。輸入wmic後系統會自動安裝wmic,無需安裝光盤介入,很快就能完成安裝。然後您就會得到“wmic:root/cli>”的提示,這樣就可以輸入命令了。輸入的命令需一行一行完成,完成之後返回結果,才能進行下一條指令的輸入,這就是一般所說的“交互模式”(Interactive Mode)。

如果在批處理(.bat)裏邊也需要用到WMIC,則需要參考“非交互模式”(Non-interactive Mode)的方法。具體操作是將WMIC、目標計算機(在同一工作組或域中,可能需要檢查權限)、命令放在同一行裏邊書寫。應用格式爲:
wmic /node:COMPUTERNAME COMMAND

例如,wmic /node:localhost printer list status 就能返回如

Name Status
Microsoft XPS Document Writer Unknown
Fax Unknown

這樣的結果。

2、WMIC動詞

WMIC也有自己的動詞規範。常見動詞有Assoc、Create、Delete、Get、Set等。除此之外,Class、Context、Quit、Exit也是支持的。下面分別介紹一下。

ASSOC
ASSOC顯示與指令內容相附屬的的內容。比如以下兩個例子
group where name='administrators' assoc
os assoc
自己試試看就知道返回結果是什麼了。因爲此項內容涉及查詢,所以所花時間較長。

Create
創建一個新的環境變量。如
environment create name="progloc", username="wkst01/ethanw",variablevalue="%programfiles%/prog01"
針對wkst01/ethanw,創建一個progloc變量指向="%programfiles%/prog01"。

Delete
當然就是Create反過來的情況。使用
environment where(name="progloc") delete
就能把剛纔創建的那個環境變量刪掉。

Get
獲取指定信息。
partition get bootpartition, description, deviceid, bootable
有關分區信息的獲取。

Set
這可能是最常用的動詞命令,例如
path WIN32_USERACCOUNT where(name="user01") set disabled="true"
把user01這個賬戶禁用掉。

正如剛纔所說,Path、Class、Context、Quit、Exit也支持。Path和Class都意味直接訪問一個WMI架構,例如:class WIN32_SOFTWAREELEMENT get。Class和Path區別在於,Class針對Class Definition,Path針對實例本身和它的屬性。Context直接顯示全局設定,似乎沒有命令參數。

Exit和Quit就不用說了,兩者用法和含義相同,返回到初始shell。

3、實用工作
正如前面所說,wmic可用在批處理中,與一般命令別無二致,均可使用變量。輸出結果還能使用xsl等形式保存,只需要在相應位置添加諸如/format:textvaluelist.xsl這樣的命令即可。舉個例子:

LISTING 2: Code to Use Variables in a WMIC Batch File
@echo off
if "%1"=="" goto msg
if "%2"=="" goto single
wmic /node:%1, %2 cpu get name,
caption, maxclockspeed,
systemname
/format:textvaluelist.xsl
goto end
:single
wmic /node:%1 cpu get name,
caption, maxclockspeed,
systemname
/format:textvaluelist.xsl
goto end
:msg
echo you must specify at least
one computer name.
:end

Views: 907

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章