GalaxyPilot —— D.S


                  生命不熄,戰(zhàn)斗不止
          數(shù)據(jù)加載中……

          wmic

          什么是WMIC?

                WMIC擴(kuò)展WMI(Windows Management Instrumentation,Windows管理規(guī)范) ,提供了從命令行接口和批命令腳本執(zhí)行系統(tǒng)管理的支持。在WMIC出現(xiàn)之前,如果要管理WMI系統(tǒng),必須使用一些專門的WMI應(yīng)用,例如SMS,或者使用 WMI的腳本編程API,或者使用象CIM Studio之類的工具。如果不熟悉C++之類的編成語言或VBScript之類的腳本語言,或者不掌握WMI名稱空間的基本知識(shí),要用WMI管理系統(tǒng)是很困難的。WMIC改變了這種情況,為WMI名稱空間提供了一個(gè)強(qiáng)大的、友好的命令行接口。
                WMIC比WMI簡單、直觀得多,這主要是由于使用了別名(Alias)。別名機(jī)制獲取用戶在命令行上輸入的一些簡單命令,按照預(yù)定義的方式操作WMI名 稱空間,例如根據(jù)一個(gè)簡單的WMIC別名Get命令構(gòu)造出一個(gè)復(fù)雜的WMI查詢語言(WQL)命令。從這個(gè)意義上看,別名是用戶和名稱空間之間一個(gè)簡化操 作的中間層。例如,如果在WMIC命令行上執(zhí)行下面這個(gè)簡單的WMIC命令,就可以獲得用戶帳戶的基本信息:
                useraccount list brief
                在上面的命令中,Useraccount別名執(zhí)行了一個(gè)Win32_Useraccount類的WQL查詢,以文本的形式顯示出從該類提取的信息。另 外,WMIC還以文本的形式顯示出Win32_Useraccount類的屬姓。除了文本形式的輸出之外,WMIC還能夠以其他形式返回命令執(zhí)行結(jié)果,例 如XML、HTML或者CSV(逗號(hào)分隔的文本文件)。
                WMIC以WMI模式中類的實(shí)例的形式保存別名。默認(rèn)的別名類——MSFT_CliAlias,以及其他支持WMIC的類保存在模式的默認(rèn)名稱空間,或者 說root\cli角色。角色可以簡單地看成專門用來支持WMIC的另一個(gè)WMI名稱空間。默認(rèn)角色root\cli連接到root\cimv2名稱空 間,操作root\cimv2之內(nèi)的類。雖然使用WMIC時(shí)一般不需要用到CIM Studio,但CIM Studio可以用來方便地查看root\cli名稱空間
                你可以向root\cli名稱空間和其他名稱空間加入新的別名,還可以用Class和Path命令直接訪問WMI名稱空間,本文后面將詳細(xì)說明Class和Path命令。

          運(yùn)行WMIC

                執(zhí)行“wmic”命令啟動(dòng)WMIC命令行環(huán)境。這個(gè)命令可以在XP或 .NET Server的標(biāo)準(zhǔn)命令行解釋器(cmd.exe)、Telnet會(huì)話或“運(yùn)行”對(duì)話框中執(zhí)行。這些啟動(dòng)方法可以在本地使用,也可以通過.NET Server終端服務(wù)會(huì)話使用。
                第一次執(zhí)行WMIC命令時(shí),Windows首先要安裝WMIC,然后顯示出WMIC的命令行提示符。在WMIC命令行提示符上,命令以交互的方式執(zhí)行。例如,執(zhí)行下面的命令將關(guān)閉正在運(yùn)行的Outlook:
                process where name='outlook.exe' call terminate
                命令運(yùn)行結(jié)束后,WMIC命令行提示符重新出現(xiàn)。
                WMIC也可以按照非交互的模式運(yùn)行。如果要執(zhí)行某個(gè)單步的任務(wù),或者運(yùn)行批命令中的一系列WMIC命令,非交互模式就很有用。要使用非交互模式,只要在 同一個(gè)命令行上啟動(dòng)WMIC并輸入要執(zhí)行的命令就可以了。例如,執(zhí)行cmd.exe打開一個(gè)命令行窗口,然后執(zhí)行下面的命令,就可以輸出連接到 MACHINE1的打印機(jī)清單:
                wmic /node:MACHINE1 printer list status
                在這個(gè)例子中,第一個(gè)操作是啟動(dòng)WMIC,然后是根據(jù)/node參數(shù)建立一個(gè)到MACHINE1的遠(yuǎn)程連接,最后執(zhí)行一個(gè)WMIC命令顯示出打印機(jī)狀態(tài)信息。命令運(yùn)行結(jié)束后,返回到Windows命令行提示符狀態(tài)。
                 安裝了WMIC的機(jī)器可以連接到任何一臺(tái)安裝了WMI的機(jī)器,被連接的機(jī)器不需要安裝 WMIC。例如,從一臺(tái)運(yùn)行Win XP Pro的機(jī)器啟動(dòng)WMIC,可以連接和管理所有賬行著XP、Win2K、Windows NT 4.0、Windows Me和Windows 9x的機(jī)器。

          WMIC命令行構(gòu)成

                WMIC提供了大量的全局開關(guān)、別名、動(dòng)詞、命令和豐富的命令行幫助增強(qiáng)用戶接口。全局開關(guān)是適用于整個(gè)WMIC會(huì)話的配置選項(xiàng)。例 如,/trace:on開關(guān)啟用錯(cuò)誤跟蹤機(jī)制,如果這個(gè)開關(guān)處于打開狀態(tài),WMIC返回每一個(gè)命令的錯(cuò)誤信息。利用/note開關(guān)可以訪問遠(yuǎn)程機(jī)器, /interactive:on開關(guān)要求WMIC在執(zhí)行刪除操作之前提示確認(rèn),其他的全局開關(guān)還包括/role、/user、/implevel以及 /namespace。
                如前所述,別名是用戶和WMI名稱空間一個(gè)簡化語法的中間層。當(dāng)你指定一個(gè)別名時(shí),動(dòng)詞(Verb)表示要執(zhí)行的動(dòng)作。例如,前面例子中的List和Call就是兩個(gè)動(dòng)詞的例子。表一描述了其他一些WMIC動(dòng)詞,并為每一個(gè)動(dòng)詞給出了例子。
          表一:WMIC動(dòng)詞
                動(dòng)詞 例子 說明
                Assoc group where name= 'administrators' assoc 顯示出Administrators組與系統(tǒng)的所有關(guān)聯(lián),包括Administrators組成員等。
                又如,os assoc顯示出有關(guān)操作系統(tǒng)的信息和已經(jīng)安裝的補(bǔ)丁。
                Create environment create name="progloc", username="work01\User1",variablevalue= "%programfiles%\prog01" 創(chuàng)建一個(gè)名字為Progloc的變量,把它的值設(shè)置為Program Files文件夾的一個(gè)子文件夾,把這個(gè)變量加入到Work01工作組計(jì)算機(jī)User1帳戶。
                Delete environment where(name= "progloc") delete 刪除Progloc環(huán)境變量。測(cè)試WMIC命令時(shí),為了防止意外地刪除,可以使用/interactive:on全局開關(guān),這時(shí)刪除之前會(huì)要求確認(rèn)。
                Get partition get bootpartition, description, deviceid, bootable 返回分區(qū)是否可啟動(dòng)、描述信息和設(shè)備ID屬姓等信息。
                Set path WIN32_USERACCOUNT where(name="user01") set disabled="true" 在成員服務(wù)器或工作站上禁用User01用戶帳戶。
                命令用來控制對(duì)WMIC和WMI名稱空間的訪問。注意表一的最后一個(gè)例子,這個(gè)例子用的是 Path和Win32_USERACCOUNT類,而不是Useraccount別名。Path是一個(gè)直接訪問WMI名稱空間中實(shí)例的命令,不必再通過別 名訪問。如果待執(zhí)行的系統(tǒng)管理任務(wù)沒有現(xiàn)成的別名可用,Path命令特別有用。雖然你可以用新的別名和角色擴(kuò)展WMIC,但如果你對(duì)WMI名稱空間比較熟 悉,使用Path命令也很方便。
                除了Path命令之外,WMIC還支持Class、Context、Quit和Exit命令。 Class命令用來直接訪問WMI模式內(nèi)的類或創(chuàng)建現(xiàn)有類的實(shí)例。Class命令和Path命令的不同之處在于,Path命令的作用對(duì)象是實(shí)例以及它的屬 姓(例如,提取管理用的信息),而Class命令的作用對(duì)象是類的定義。例如,如果要提取出WIN32_SOFTWAREELEMENT類的所有屬姓,可 以執(zhí)行如下命令:
                class WIN32_SOFTWAREELEMENT get
                這個(gè)命令的輸出是HTML格式,稍后我們將了解如何用/output全局開關(guān)把輸出重定向到可用瀏覽器打開的HTML文件。Class命令加上Assoc動(dòng)詞能夠顯示出類的名稱空間路徑以及其他與該類關(guān)聯(lián)的類。利用Class命令可以刪除類、創(chuàng)建類的實(shí)例,但不能創(chuàng)建類。
                Context命令顯示出全局開關(guān)的當(dāng)前設(shè)置。Quit和Exit命令用來退出WMIC命令提示符環(huán)境,返回以前的Shell環(huán)境(例如Telnet環(huán)境,或XP的 命令行提示符環(huán)境)。
                命令行幫助是熟悉WMIC的有效途徑。表二是在WMIC提示符下查找信息的常用命令:
                表二:命令行幫助
                命令 例子 說明
                /? 或 -? 顯示所有全局開關(guān)和別名的語法
                / /? /user /? 顯示指定全局開關(guān)的信息
                /? class /? 顯示某個(gè)命令的信息
                /? memcache /? 顯示某個(gè)別名的信息
                /? temperature get /? 顯示別名與動(dòng)詞組合的信息
                /?:Full irq get /?:Full 顯示動(dòng)詞的幫助信息

          實(shí)踐應(yīng)用

                以上我們了解了WMIC命令行環(huán)境的基礎(chǔ)知識(shí),下面來看看如何用批命令運(yùn)行WMIC,以及把輸出結(jié)果定向到控制臺(tái)或HTML、XML文件。從批命令文件運(yùn) 行WMIC的好處在于不需要重復(fù)輸入一系列復(fù)雜的命令,例如,下面是一個(gè)批命令文件的內(nèi)容,它的作用是顯示出MACHINE1和MACHINE2這兩臺(tái)機(jī) 器的CPU信息,輸出結(jié)果顯示在控制臺(tái)上。/format開關(guān)是面向動(dòng)詞的開關(guān),而不是全局開關(guān),它只用于Get和List動(dòng)詞。
                wmic /node:MACHINE1, MACHINE4 cpu get name, caption,
                maxclockspeed, systemname /format:textvaluelist.xsl
               
          WMIC批命令可以使用變量。也就是說,對(duì)于上面的批命令,服務(wù)器的名字不僅可以直接 指定,而且還可以通過%1、%2的形式指定,下面就是一個(gè)例子。把下面的代碼放入一個(gè)批命令文件,然后在執(zhí)行批命令文件時(shí)加上一到二個(gè)機(jī)器的名字即可;另 外,也可以創(chuàng)建一個(gè)獨(dú)立的文本文件,然后在文本文件中放入機(jī)器名字的清單,清單可以是CSV格式,或用換行符分隔的格式。如果使用獨(dú)立的文本文件提供機(jī)器名字,只需在/node全局開關(guān)后面加上以@符號(hào)為前綴的文本文件名字,@符號(hào)告訴/node開關(guān)后面的參數(shù)是一個(gè)文件名字而不是機(jī)器名字。
                @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 必須指定至少一臺(tái)計(jì)算機(jī)的名字。 :end
                如前所述,WMIC命令的輸出結(jié)果不僅可以發(fā)送到控制臺(tái),還可以發(fā)送到XML或HTML、 MOF(Managed Object Format)格式的文件。在安裝了WMI的計(jì)算機(jī)上,MOF是WMI數(shù)據(jù)庫中類和類實(shí)例的原始保存形式。下面的例子顯示了如何把MACHINE4處理器 信息的查詢結(jié)果輸出到HTML文件,/output全局開關(guān)要求WMIC把輸出發(fā)送到file1.htm,/format開關(guān)要求WMIC把原始的XML 輸出轉(zhuǎn)換成HTML格式。用來轉(zhuǎn)換格式的XSL樣式文件既可以是自定義的,也可以是任何安裝了WMIC的機(jī)器上\%systemroot% \system32\wbem文件夾下面的任意XSL文件。例如,利用csv.xsl樣式文件可以把輸出結(jié)果轉(zhuǎn)換成CSV格式,利用htable.xsl 樣式可以構(gòu)造出一個(gè)包含結(jié)果數(shù)據(jù)的表格
                是在瀏覽器中打開的file1.htm文件。
                wmic /node:MACHINE4 /output:e:\file1.htm cpu get description,
                maxclockspeed, extclock, manufacturer,revision /format:hform.xsl
                前面已經(jīng)提到,Class命令加上Get動(dòng)詞的默認(rèn)輸出是HTML格式。因此,如果要把這類命 令的輸出結(jié)果保存到HTML文件,只需指定/output開關(guān),不必加上/format開關(guān)。/record和/append全局開關(guān)也能夠從WMIC命 令行截取信息,請(qǐng)利用WMIC的命令行幫助功能了解有關(guān)這些開關(guān)的更多信息。
                如果要以XML格式輸出,用/translate開關(guān)和Basicxml關(guān)鍵詞把大于符號(hào)“>”和小于符號(hào)“<”轉(zhuǎn)換成XML中有意義的字符。
          下面是輸出XML的一個(gè)例子,輸出的XML數(shù)據(jù)可導(dǎo)入到數(shù)據(jù)庫或其他能夠理解XML標(biāo)記的系統(tǒng)。下面代碼的輸出中包含了WMIC命令、命令行請(qǐng)求參數(shù)、目標(biāo)節(jié)點(diǎn)、全局開關(guān)以及命令執(zhí)行結(jié)果。
                wmic cpu get maxclockspeed /translate:basicxml /format:rawxml.xsl
                總之,WMIC是XP和.NET Server中命令行管理功能的一次重要改進(jìn),對(duì)于從命令行訪問和管理WMI名稱空間提供了強(qiáng)健的支持。雖然掌握和熟悉WMIC命令行環(huán)境需要一段時(shí)間,但只要你熟悉了它,一個(gè)系統(tǒng)管理的全新境界將展現(xiàn)在你的面前。

          posted on 2008-09-26 13:56 舵手 閱讀(2183) 評(píng)論(1)  編輯  收藏

          評(píng)論

          # re: wmic  回復(fù)  更多評(píng)論   

          開發(fā)網(wǎng)管程序很有用
          2008-09-27 14:33 | 隔葉黃鶯

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 甘孜| 师宗县| 仙居县| 商水县| 安吉县| 布尔津县| 界首市| 林州市| 天门市| 蓬安县| 栾川县| 内丘县| 克山县| 安乡县| 宣汉县| 平度市| 津南区| 成都市| 崇信县| 佛冈县| 景德镇市| 平顺县| 沙雅县| 遂宁市| 浦东新区| 儋州市| 平潭县| 白沙| 东山县| 中山市| 房产| 丰城市| 揭东县| 营山县| 酒泉市| 平塘县| 龙陵县| 长垣县| 洛阳市| 河南省| 永修县|