淺談CIM與WMI 本篇作者:張聖民 (David_Chang)
刊登日期:2002/11/28


當我們在使用電腦時,經常需要取得某些電腦系統中的資訊,例如C碟磁中剩餘的硬碟空間或CPU的使用率等。我們都知道以人工透過檔案總管可以取得剩餘硬碟空間的數字,但您是否想過要如何利用程式自動取得這種資訊呢?例如您希望正在撰寫中的軟体安裝程式能夠判斷當硬碟空間小於100MB時就停止安裝,那您的程式該如何寫?


其實所有網路日常維護管理工作的第一步都必然是如何取得系統的各項狀態資訊,不幸的是在不同的系統之間其資訊內容各異,取得方法也大有不同,例如SQL server每秒鐘處理的查詢數與網路卡每秒鐘傳送的封包數都是很有價值的管理資訊,但取得的途徑與方法就會有很大的差別,傳統的網路管理人員光是想要搜集到所有的管理資訊,恐怕就先要練就十八般武藝。

Web Based Enterprise Management (WBEM)就是在此一情境下誕生,它是由產業界的幾家軟硬体廠商,如Microsoft, Intel, Compaq, BMC等,所共同倡議提出,目的是統一各類軟硬體環境下管理資訊的取得方法。它實際上是一組管理技術與Internet標準的組合,將許多已被業界廣泛使用的管理協定如SNMP等予以整合。
 
WBEM所採行的資訊管理架構,是由DMTF (Distributed Management Task Force)所制定的CIM (Common Information Model)。CIM是一個在企業網路環境中描述所有電腦系統與網路設備整體管理資訊的模型,包括了一組規格書(Specification)及一組Schema。Schema定義了CIM模型的詳細描述,包括所有被管理物件及其描述方式(說白話點,就是資料庫有那些欄位啦!)。而規格書則定義了CIM模型與其他管理模型的整合。CIM自從1997年提出1.0版以來,目前最新版本為2.7版,您可以透過 http://www.dmtf.org 查閱詳細資料。
 
由於CIM只是一個物件的模型,各廠商均可以此模型提出各自(但彼此相容)的實做,而Microsoft所提出的實做,就稱之為WMI (Windows Management Instrumentation),並在Windows 2000中首次加入此一管理功能,目前Windows NT及Windows 95/98等均已先後支援WMI的管理。WMI的Schema可以參閱 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwmi/html/wmichart.asp
 
WMI是一個三套式架構的模型,由上而下分別是1. WMI資料提供者(WMI Provider)、2. CIM物件管理員(CIM Object Manager)以及3. WMI資訊請求者(WMI Consumer)。(如圖一)
A、WMI資料提供者(WMI Provider)﹕
一個被WMI所管理的系統可能是指一個作業系統、一套應用軟體,甚至是一組硬體裝置,我們稱之為資料來源。而WMI Provider正是WMI與這些資料來源之間的中介。當WMI架構中需要得到某項被管理系統的資訊時,就會命令WMI Provider到被管理系統中取回資料。其實WMI Provider除了可以從資料來源讀出資訊之外,必要時還可以寫入資訊。
 
正如前面所述,被管理的資料來源非常多樣化,因此WMI Provider也必須細分成多種類型與之對應﹕
  • A1. Win32 Provider﹕
    提供作業系統、電腦系統、周邊設備、檔案系統(File System)等相關資料。


  • A2. WDM (Windows Driver Model) Provider﹕
    提供使用者輸入裝置,儲存裝置,網路介面及通訊埠等資料。


  • A3. Event Log Provider﹕
    提供Windows事件紀錄(Event Log)的相關資料,亦可設定Windows事件紀錄的選項或備份。此外,當事件紀錄中每新增一筆記錄時,Event Log Provider亦可為它產生一個WMI事件並主動傳回WMI系統。


  • A4. Registry Provider﹕
    可以建立/讀取/寫入Registry Key,亦可設定在特定Registry Key有異動時主動產生一個WMI事件並主動傳回WMI系統。


  • A5 Performance Counter Provider﹕
    可跳過效能監視器(Performance Monitor),直接取得系統效能資料。當有任何支援效能監視器的應用程式計數器(Counter)被新裝到系統後,亦可直接透過Performance Counter Provider取得計數器的數值。


  • A6. Active Directory Provider﹕ 可直接存取放在AD中的資料。


  • A7. Windows Installer Provider﹕
    可完整控制Windows Installer,並經由WMI安裝應用軟體,或查詢那些軟體是經由Windows Installer所安裝的。


  • A8. SNMP Provider﹕
    對於支援SNMP的系統及設備,可直接讀取並寫入MIB,所有SNMP trap亦可直接轉成對應的WMI事件並主動傳回WMI系統。


  • A9. View Provider﹕
    可將前面八類Provider所提供的資料予以過濾或彙集,並建立新的檢視方法。例如﹕原本的class中包含許多您不需要的資訊,可以透過View Provider建立新的檢視,將部份資料濾除,或者將多個class予以合併成一個。
B、WMI 資料請求者(WMI Data Consumer)﹕
一切需要借助於WMI取得管理資訊的應用系統均屬於此一層。例如Microsoft System Management Server(SMS)及Microsoft Operations Manager(MOM)等均大量利用WMI取得被管理電腦上的元件及其狀態。
 
C、CIM Object Manager(CIMOM)﹕
正因為資料來源種類太多,CIM希望統一其呼叫方式,因此在WMI架構之下,當網管人員或網管系統需要某項系統管理資訊時,WMI Data Consumer並不需要知道各項資料來源的真正位置及呼叫方式,而是透過WMI所訂的統一資料格式,以查詢語言向CIMOM提出請求。
 
對CIMOM而言,每一個WMI Provider被視為一個外掛模組,透過COM(Common Object Model)的介面與CIMOM溝通。CIMOM會隨時追蹤現在有那些類別的資料可以提供查詢,以及應該由那一個WMI Provider負責回應資料。CIMOM也有一個自已的資料庫,存放靜態的系統資料,因此當CIMOM收到這類資料請求時能不必等待WMI Provider傳回的資料就立即回應。
 
我們談完了WMI的系統架構,但是這個架構對系統管理人員而言有什麼幫助呢?我們可以歸納出下列幾點﹕
  1. 列出並瀏覽被管理系統的資訊﹕管理系統可藉WMI找出被管理系統上有那些可供查詢的資訊,並可瀏灠所有資料內容。


  2. 查詢能力﹕WMI將各項資料來源視為資料庫,因此允許管理系統或管理人員用類似SQL Statement的語法查詢所需的特定資料。


  3. 事件的偵測﹕不論是在事件紀錄中新增了一筆事件,或是任何您所關心的WMI Provider所監控的物件資料項目有異動,都可以透過訂閱,令WMI在第一時間送出WMI Event,令管理系統或管理人員立即查知。


  4. Script能力﹕WMI下所有的被管理物件都有統一的呼叫方式及介面,因此管理人員可以輕易地自行撰寫程式或Script來執行經常或定期執行的管理動作。程式語言如Visual Basic、Visual C++等所撰寫的應用程式,可以直接呼叫WMI取得管理資料,而script語言如VBScript、JSript、Perl則需透過Windows Scripting Host (WSH)才能呼叫WMI。


  5. 遠端管理能力﹕WMI下所有管理功能均支援本機及遠端的管理系統或script之呼叫。