與以前的相比,Windows 2K/XP的優點之一是具有更好的可管理性。例如它支持Windows 2000服務器終端服務下的遠程管理模式,支持Microsoft管理控制台(MMC), 再有一個就是支持WMI。WMI是Windows Management Instrumentation的縮寫,即Windows 管理規范。WMI有許多用途,其中之一就是通過腳本編程實現管理自動化。
一、為什麼要用腳本?
回顧九十年代,Windows NT之所以獲得成功,原因之一就在於相對而言這個比較容易使用,任何能夠使用Windows 3.1的用戶差不多就可以管理一個簡單的NT網絡(這在今天聽起來有點不可思議,但事實是,NT 3.1比Windows 2K/XP功能少得多,因而簡單得多)。只要看看NT的控制面板,這個可以做些什麼就大致有個印象了。
隨著的發展,原來友好的界面變得更加友好。在Windows 2K/XP中,幾乎每一個操作過程都有向導,每一個級的對象都有圖形化的屬性頁;不同的操作選擇引導你到達最終完成任務的對話框,MMC允許你把常用的工具(甚至是第三方的工具)插入到定制的工具集。
然而,高級用戶感到友好的GUI實在太繁瑣了。另外,盡管在命令行上也可以執行某些任務,但命令行沒有圖形工具那樣完備的功能。為了讓Windows 2K/XP下的操作任務自動化,一種較好的途徑是通過腳本程序直接訪問圖形化工具訪問的管理接口。WMI允許用戶通過一個統一的接口,用腳本語言訪問的幾乎任意一個部分。當然,用腳本對WMI編程也有一些限制,例如不能直接訪問Win32 API。
二、WMI是什麼?
WMI是Windows 2K/XP管理系統的核心;對於其他的Win32,WMI是一個有用的插件。WMI以CIMOM為基礎,CIMOM即公共信息模型對象管理器(Common Information Model Object Manager),是一個描述構成單元的對象數據庫,為MMC和腳本程序提供了一個訪問構成單元的公共接口。有了WMI,工具軟件和腳本程序訪問的不同部分時不需要使用不同的API;相反,的不同部分都可以插入WMI,如圖一所示(該圖來自MSDN),工具軟件和WMI可以方便地讀寫WMI。
圖一
Windows 2K/XP和Windows 98 都支持WMI;如果為NT 4.0和Windows 95加上了 Service Pack 4或更高版本,NT 4.0和Win95也支持WMI。因此,用WMI進行遠程管理時,並非一定要用Windows 2K/XP(當然,如果WMI腳本在一台沒有性能監視器的Win9x機器上運行,就不能在遠程Win9x系統上查詢Windows 2K/XP的性能監視器。
如前所述,WMI允許通過一個公共的接口訪問多種構成單元,因此不必分別對待各種底層接口或所謂的“提供者”。利用WMI可以高效地管理遠程和本地的計算機;與此相對,並非所有的Windows 2K/XP命令行工具都支持遠程運行。
WMI是WBEM模型的一種實現。WBEM即Web-Based Enterprise Management,或基於Web的企業管理,WBEM由DMTF(Distributed Management Task Force,分布式管理任務組)在許多廠商的幫助下創立,包括Compaq、Sun、Microsoft等。WBEM的目標是,為管理企業環境開發一個標准的接口集。WBEM模型最關鍵的部分是它的數據模型(或描述和定義對象的方式)、編碼規范(Encoding Specification),以及在客戶端和服務器端之間傳輸數據的模式。
WBEM的數據模型是CIM(Common Information Model,公共信息模型)。CIM是一個用來命名計算機的物理和邏輯單元的標准的命名系統(或稱為命名模式),例如硬盤的邏輯分區、正在運行的應用的一個實例,或者一條電纜。
CIM是一個面向對象的模型,使用一組面向對象的術語進行描述。CIM包含類(Class),類是被管理單元的模板。類的實例稱為對象(Object),對象代表著底層系統的一個具體單元。名稱空間(Namespace)是一個類的集合,每個名稱空間面向一個特定的管理領域。類包含屬性(Property)和方法(Method)。