使用WMIC從命令列對Windows的全面管理

2021-08-25 01:50:11 字數 2027 閱讀 2709

從windows 2000開始,wmi(windows 管理規範)就是windows系統管理的重要組成部分。wmic是windows management instrumentation command-line的簡稱,在wmic出現之前,要從命令列訪問wmi資料庫或wmi命名空間不是一件容易的事情。現在,wmic利用wmi強大的功能把系統管理擴充套件到了命令列。

一、什麼是wmic?

wmic擴充套件wmi,提供了從命令列介面和批命令指令碼執行系統管理的支援。在wmic出現之前,如果要管理wmi系統,必須使用一些專門的wmi應用,例如sms,或者使用wmi的指令碼程式設計api,或者使用象cim studio之類的工具。如果不熟悉c++之類的編成語言或vbscript之類的指令碼語言,或者不掌握wmi命名空間的基本知識,要用wmi管理系統是很困難的。wmic改變了這種情況,為wmi命名空間提供了乙個強大的、友好的命令列介面。

wmic比wmi簡單、直觀得多,這主要是由於使用了別名(alias)。別名機制獲取使用者在命令列上輸入的一些簡單命令,按照預定義的方式操作wmi命名空間,例如根據乙個簡單的wmic別名get命令構造出乙個複雜的wmi查詢語言(wql)命令。從這個意義上看,別名是使用者和命名空間之間乙個簡化操作的中間層。例如,如果在wmic命令列上執行下面這個簡單的wmic命令,就可以獲得使用者帳戶的基本資訊:

useraccount list brief

在上面的命令中,useraccount別名執行了乙個win32_useraccount類的wql查詢,以文字的形式顯示出從該類提取的資訊。另外,wmic還以文字的形式顯示出win32_useraccount類的屬性。除了文字形式的輸出之外,wmic還能夠以其他形式返回命令執行結果,例如xml、html或者csv(逗號分隔的文字檔案)。

wmic以wmi模式中類的例項的形式儲存別名。預設的別名類——msft_clialias,以及其他支援wmic的類儲存在模式的預設命名空間,或者說root/cli角色。角色可以簡單地看成專門用來支援wmic的另乙個wmi命名空間。預設角色root/cli連線到root/cimv2命名空間,操作root/cimv2之內的類。雖然使用wmic時一般不需要用到cim studio,但cim studio可以用來方便地檢視root/cli命名空間。例如,圖一顯示了root/cli節點以及msft_clialias類的一些屬性。

你可以向root/cli命名空間和其他命名空間加入新的別名,還可以用class和path命令直接訪問wmi命名空間,本文後面將詳細說明class和path命令。

二、執行wmic

執行「wmic」命令啟動wmic命令列環境。這個命令可以在xp或.net server的標準命令列直譯器(cmd.exe)、telnet會話或「執行」對話方塊中執行。這些啟動方法可以在本地使用,也可以通過.net server終端服務會話使用。

第一次執行wmic命令時,windows首先要安裝wmic,然後顯示出wmic的命令列提示符。在wmic命令列提示符上,命令以互動的方式執行。例如,執行下面的命令將關閉正在執行的outlook:

process where name='outlook.exe' call terminate

命令執行結束後,wmic命令列提示符重新出現,如圖二所示。每個命令必須在一行之內輸入,中間不能插入換行符。

wmic也可以按照非互動的模式執行。如果要執行某個單步的任務,或者執行批命令中的一系列wmic命令,非互動模式就很有用。要使用非互動模式,只要在同乙個命令列上啟動wmic並輸入要執行的命令就可以了。例如,執行cmd.exe開啟乙個命令列視窗,然後執行下面的命令,就可以輸出連線到machine1的印表機清單:

wmic /node:machine1 printer list status

在這個例子中,第乙個操作是啟動wmic,然後是根據/node引數建立乙個到machine1的遠端連線,最後執行乙個wmic命令顯示出印表機狀態資訊。命令執行結束後,返回到windows命令列提示符狀態。

安裝了wmic的機器可以連線到任何一台安裝了wmi的機器,被連線的機器不需要安裝wmic。例如,從一台執行win xp pro的機器啟動wmic,可以連線和管理所有執行著xp、win2k、windows nt 4.0、windows me和windows 9x的機器。

PHP從命令列接收引數

昨天,在牛客網做華為機試題,不太熟悉它的環境,吃了大虧。測試樣例是通過標準輸入輸入的,執行結果是通過標準輸出輸出的。標準輸入就是鍵盤,標準輸出就是顯示器。經過大量實踐,發現fscanf 最好用,沒有之一!mixed fscanf resource handle,string format mixed...

LinuxTips 從命令列到指令碼

對於linux的中的一些問題,一般地我們可以通過以下的思路來解決 1 使用linux提供的很多的小工具和管道來處理 2 如果需要使用多條命令,或需要邏輯判斷,考慮使用sh,sh除了能直接使用linux的小工具外,還可以進行很多的邏輯和流程控制 3 如果需要很多的字串處理,問題也比較複雜,考慮使用pe...

C語言從命令列接收引數

設包含如下程式的檔名為myprog.c編譯後輸入命令 myprog how are you則執行結果是 include int main int argc,char argv argc是命令列總的引數個數,如 c users kang desktop main.exe myprog how are ...