簡介
Windows管理工具(WMI)由一組擴展到的Windows驅動程式模型。WMI允許腳本語言(例如VBScript或Windows PowerShell)來本地或遠程管理Microsoft Windows個人電腦和伺服器。WMI預裝在Windows 2000及更新版的微軟作業系統中,它也可以手動下載以適用於Windows 95和Windows 98等Windows NT作業系統。
微軟為WMI提供了一個稱之為Windows Management Instrumentation Command-line(WMIC)的命令行界面。
目的
WMI的目的是定義一系列獨立於環境的專有規範,允許管理信息在管理應用程式之間共享。WMI規定了企業管理標準以及現有的適用於Windows的相關技術,例如桌面管理接口(DMI)和SNMP。WMI通過提供統一的模型來補充其他標準。該模型表示可以通過一種常用方式來訪問受管環境的任何來源的管理數據。
開發過程
因為WMI使用CIM和提供者集合來抽取可管理的實體,所以提供者的開發意味著數個步驟。主要步驟可歸納如下:
創建可管理的實體模型
定義一個模型
實現該模型
創建WMI提供者
確定要實現的提供者類型
確定該提供者的託管模型
用ALT嚮導創建提供者模板
在該提供者中實現代碼邏輯
使用WMI和該系統註冊該提供者
測試該提供者
創建用戶樣本代碼
1.創建可管理的實體模型
2.定義一個模型
3.實現該模型
4.創建WMI提供者
5.確定要實現的提供者類型
6.確定該提供者的託管模型
7.用ALT嚮導創建提供者模板
8.在該提供者中實現代碼邏輯
9.使用WMI和該系統註冊該提供者
10.測試該提供者
11.創建用戶樣本代碼
WMI提供者的重要性
自從Windows NT 4.0SP4時代的第一個WMI實現發布(作為外部下載)以來,微軟一直在向Windows添加WMI提供者:
•在Windows NT 4.0上,安裝WMI後,微軟提供了大約15個可用的WMI提供者
•在Windows 2000發布之時,微軟已發布29個WMI提供者作為作業系統預裝的一部分
•在Windows Server 2003發布時,微軟在平台上包含80多個WMI提供者
•Windows Vista包含13個新的WMI提供者,總數量接近100個
•Windows Server 2008包含更多提供者,例如用於IIS7、PowerShell和虛擬化的提供者
許多客戶解讀了提供者數量的增長,認為這表示著WMI已經成為微軟Windows一項“無處不在”的管理層,即使微軟從未明確承諾這點。
因為Windows中通過WMI管理數據的不斷增加,信息技術系統管理領域的人員開始開發基於WMI的腳本和自動化程式。除了腳本需求外,大多數領先的管理軟體(包括MOM、SCCM、ADS、HPOpenViewfor Windows(HPOV)、BMC Software、CA, Inc)都提供WMI功能,允許通過各種用戶接口使用或提供WMI信息。這使得不能在WMI層面上編程的系統管理員和操作員無需編寫腳本或程式,也能享受到WMI的優勢,甚至無需了解它。
特性
對於願意開發一個或多個WMI提供者的人來說,WMI提供了許多功能。這是最重要的優點:
自動化接口: 由於WMI隨附了一套可供使用的自動化接口,所以WMI提供程式及其類集支持的所有管理功能都可獲得免費的開箱即用的腳本支持。除了WMI類設計和提供者開發之外,Microsoft開發和測試團隊不需要創建,驗證和測試腳本模型,因為它已經從WMI提供。
.NET管理接口: 由於System.Management命名空間依賴於現有的COM/DCOM管道,所創建的WMI提供商和其組WMI類變為自動提供給獨立地使用的語言的所有.NET應用程式(例如C#,VB.NET)。除了WMI類設計和提供程式開發之外,Microsoft開發和測試團隊不需要創建,驗證和測試新程式集以支持.NET Framework中的新名稱空間,因為WMI已經提供了此支持。自由。
C / C ++ COM / DCOM編程接口: 與Windows中的大多數組件一樣,COM / DCOM編程人員可以利用在COM / DCOM接口級別開發的提供程式的功能。像以前的環境(腳本和.NET框架),COM / DCOM使用者只需要與標準的WMI COM接口集合進行互動,以利用WMI提供者功能及其支持的一組WMI類。為了使所有管理信息都可以從本地API獲得,WMI提供者開發人員只需要與一組預定義的WMI COM接口進行互動。這將使管理信息自動在WMI COM級別上可用。而且,腳本COM接口對象模型與COM / DCOM接口對象模型非常相似,這使得開發人員很容易熟悉腳本體驗。
遠程訪問的支持通過DCOM和SOAP: 更不是簡單地提供本地COM能力,管理是所有關於遠程,WMI提供DCOM運輸。此外,通過由微軟,英特爾,Sun Microsystems和戴爾領導的WS-Management計畫,Windows Server 2003R2中將提供SOAP傳輸。此舉措允許遠程運行任何腳本,或者通過一組處理SOAP請求/回響的特定接口來使用WMI數據。WMI提供程式開發人員的優勢在於,當他通過WMI,Windows遠程管理公開所有功能時/ WS-Management也可以消耗這些信息(WMI實例中的嵌入對象在Windows Server 2003 R2中不受支持,但它是Vista的目標)。所有分層到WS-Management以及CIM數據模型到SOAP的映射都可以從WMI / WS-Management解決方案中免費獲得。在必須使用DCOM的情況下,實現DCOM需要在每個客戶端機器上部署代理DLL。由於Windows 2000以後的Windows作業系統中都提供了WMI,所以這些問題都被消除了。
支持查詢: WMI為開箱即用的WQL查詢提供支持。這意味著如果提供程式不是為了支持查詢而設計的,WMI通過使用提供程式之外的枚舉技術來支持它。
事件處理功能: WMI提供了通知用戶任何感興趣的事件的功能。WMI使用WMI查詢語言(WQL)來提交WQL事件查詢並定義要返回的事件的類型。具有所有相關回調的事件機制是WMI COM / DCOM和自動化接口的一部分。任何編寫WMI提供者的人都可以免費為他的客戶提供這種功能。由消費者決定如何使用WMI提供者及其相關的WMI類所公開的管理信息。
代碼模板生成器: 為了加快編寫包括所有COM / DCOM接口和相關定義的WMI提供程式的過程,WMI團隊開發了WMI ATL嚮導來生成實現提供程式的代碼模板。生成的代碼基於最初由開發人員設計的WMI類模型。WMI提供程式開發人員將能夠將WMI提供程式的預定義COM / DCOM接口與其本機API的一組接口進行接口,以檢索要公開的管理信息。練習包括填充提供者代碼中的“空白”以創建所需的接口邏輯。
可預測性: 可預測性是IT專業人員關注的一個重要問題,因為它定義了具有管理Windows組件的一組界面的人員的能力,可以直觀地將這些知識直接套用於其他可管理的Windows組件,而無需重新學習一切向上。客戶的可預測性是一個真正的收益,因為它增加了投資回報(ROI)。面對這樣一種情況的人,根據以前的經驗,只是希望事情能以同樣的方式工作。COM編程/腳本接口的不斷增加對可預測性有著巨大的影響,因為這使得客戶很難自動化,管理Windows並利用其現有的知識。帶有CIM的WMI通過始終公開相同的編程對象模型(COM / DCOM,Automation,.NET)來解決這個問題,而不管可管理實體是什麼。
保護現有的客戶投資: 保護客戶和合作夥伴的投資激勵客戶投資於技術。由於微軟過去幾年來在編寫WMI提供程式方面投入了大量資金,客戶和合作夥伴投資了利用Windows的WMI功能的工具。因此,他們自然會繼續利用這些功能,而不必為每個Windows可管理組件使用一組新的特定接口。一組特定的接口意味著擁有一組特定的代理或基於新模型或內部開發的軟體,尤其是專用於組件或技術的接口。通過充分利用WMI的功能,客戶和合作夥伴可以利用過去的工作投資,同時最大限度地降低開發成本,學習曲線和新發現。
提供一個合乎邏輯和統一的管理模式: 正如前面簡要介紹的那樣,該模型基於由DMTF(http://www.dmtf.org)定義的稱為CIM的行業標準。CIM基於類的模式由一個滿足行業要求的構造者和軟體開發者組成。這意味著,不僅Microsoft利用WMI功能,而且任何其他第三方構造函式或開發人員編寫自己的代碼,以適應模型。例如,英特爾正在為他們的一些網路驅動適配器和軟體這樣做。惠普正在利用現有的WMI提供商,並在他們的HP Open View企業管理軟體中實施自己的WMI提供商。IBM從Tivoli中消耗WMI管理套件,MOM和SMS也在消費和提供WMI信息。最後,Windows XP SP2利用WMI從反病毒軟體和防火牆獲取信息狀態。
1.自動化接口: 由於WMI隨附了一套可供使用的自動化接口,所以WMI提供程式及其類集支持的所有管理功能都可獲得免費的開箱即用的腳本支持。除了WMI類設計和提供者開發之外,Microsoft開發和測試團隊不需要創建,驗證和測試腳本模型,因為它已經從WMI提供。
2..NET管理接口: 由於System.Management命名空間依賴於現有的COM/DCOM管道,所創建的WMI提供商和其組WMI類變為自動提供給獨立地使用的語言的所有.NET應用程式(例如C#,VB.NET)。除了WMI類設計和提供程式開發之外,Microsoft開發和測試團隊不需要創建,驗證和測試新程式集以支持.NET Framework中的新名稱空間,因為WMI已經提供了此支持。自由。
3.C / C ++ COM / DCOM編程接口: 與Windows中的大多數組件一樣,COM / DCOM編程人員可以利用在COM / DCOM接口級別開發的提供程式的功能。像以前的環境(腳本和.NET框架),COM / DCOM使用者只需要與標準的WMI COM接口集合進行互動,以利用WMI提供者功能及其支持的一組WMI類。為了使所有管理信息都可以從本地API獲得,WMI提供者開發人員只需要與一組預定義的WMI COM接口進行互動。這將使管理信息自動在WMI COM級別上可用。而且,腳本COM接口對象模型與COM / DCOM接口對象模型非常相似,這使得開發人員很容易熟悉腳本體驗。
4.遠程訪問的支持通過DCOM和SOAP: 更不是簡單地提供本地COM能力,管理是所有關於遠程,WMI提供DCOM運輸。此外,通過由微軟,英特爾,Sun Microsystems和戴爾領導的WS-Management計畫,Windows Server 2003R2中將提供SOAP傳輸。此舉措允許遠程運行任何腳本,或者通過一組處理SOAP請求/回響的特定接口來使用WMI數據。WMI提供程式開發人員的優勢在於,當他通過WMI,Windows遠程管理公開所有功能時/ WS-Management也可以消耗這些信息(WMI實例中的嵌入對象在Windows Server 2003 R2中不受支持,但它是Vista的目標)。所有分層到WS-Management以及CIM數據模型到SOAP的映射都可以從WMI / WS-Management解決方案中免費獲得。在必須使用DCOM的情況下,實現DCOM需要在每個客戶端機器上部署代理DLL。由於Windows 2000以後的Windows作業系統中都提供了WMI,所以這些問題都被消除了。
5.支持查詢: WMI為開箱即用的WQL查詢提供支持。這意味著如果提供程式不是為了支持查詢而設計的,WMI通過使用提供程式之外的枚舉技術來支持它。
6.事件處理功能: WMI提供了通知用戶任何感興趣的事件的功能。WMI使用WMI查詢語言(WQL)來提交WQL事件查詢並定義要返回的事件的類型。具有所有相關回調的事件機制是WMI COM / DCOM和自動化接口的一部分。任何編寫WMI提供者的人都可以免費為他的客戶提供這種功能。由消費者決定如何使用WMI提供者及其相關的WMI類所公開的管理信息。
7.代碼模板生成器: 為了加快編寫包括所有COM / DCOM接口和相關定義的WMI提供程式的過程,WMI團隊開發了WMI ATL嚮導來生成實現提供程式的代碼模板。生成的代碼基於最初由開發人員設計的WMI類模型。WMI提供程式開發人員將能夠將WMI提供程式的預定義COM / DCOM接口與其本機API的一組接口進行接口,以檢索要公開的管理信息。練習包括填充提供者代碼中的“空白”以創建所需的接口邏輯。
8.可預測性: 可預測性是IT專業人員關注的一個重要問題,因為它定義了具有管理Windows組件的一組界面的人員的能力,可以直觀地將這些知識直接套用於其他可管理的Windows組件,而無需重新學習一切向上。客戶的可預測性是一個真正的收益,因為它增加了投資回報(ROI)。面對這樣一種情況的人,根據以前的經驗,只是希望事情能以同樣的方式工作。COM編程/腳本接口的不斷增加對可預測性有著巨大的影響,因為這使得客戶很難自動化,管理Windows並利用其現有的知識。帶有CIM的WMI通過始終公開相同的編程對象模型(COM / DCOM,Automation,.NET)來解決這個問題,而不管可管理實體是什麼。
9.保護現有的客戶投資: 保護客戶和合作夥伴的投資激勵客戶投資於技術。由於微軟過去幾年來在編寫WMI提供程式方面投入了大量資金,客戶和合作夥伴投資了利用Windows的WMI功能的工具。因此,他們自然會繼續利用這些功能,而不必為每個Windows可管理組件使用一組新的特定接口。一組特定的接口意味著擁有一組特定的代理或基於新模型或內部開發的軟體,尤其是專用於組件或技術的接口。通過充分利用WMI的功能,客戶和合作夥伴可以利用過去的工作投資,同時最大限度地降低開發成本,學習曲線和新發現。
10.提供一個合乎邏輯和統一的管理模式: 正如前面簡要介紹的那樣,該模型基於由DMTF(http://www.dmtf.org)定義的稱為CIM的行業標準。CIM基於類的模式由一個滿足行業要求的構造者和軟體開發者組成。這意味著,不僅Microsoft利用WMI功能,而且任何其他第三方構造函式或開發人員編寫自己的代碼,以適應模型。例如,英特爾正在為他們的一些網路驅動適配器和軟體這樣做。惠普正在利用現有的WMI提供商,並在他們的HP Open View企業管理軟體中實施自己的WMI提供商。IBM從Tivoli中消耗WMI管理套件,MOM和SMS也在消費和提供WMI信息。最後,Windows XP SP2利用WMI從反病毒軟體和防火牆獲取信息狀態。