Microsoft Windows Management Instrumentation (WMI) 技術是 Microsoft 的分散式管理任務推動小組 (DMTF) 網路式企業管理 (WBEM,Web-Based Enterprise Management) 解決方案,它延伸了通用訊息模型 (CIM),可用來表示 Windows 管理環境中的管理物件。通用訊息模型,也是 DMTF 標準,是可延伸資料模型,能夠以邏輯的方式組織管理物件,在管理環境中保持一致與統一性。

以通用訊息模型為基礎的 WBEM 是一種 DMTF 解決方案與技術,可建立管理基礎結構標準及提供標準化方式,來存取企業環境中各種硬體與軟體管理系統的資訊。開發人員可以使用 WBEM 標準,來建立降低企業管理的複雜程度與成本的工具與技術。WBEM 透過提供這類標準降低整個產業的擁有權總成本 (TCO)。TCO 指的是與電腦硬體和軟體採購、部署與設定、硬體與軟體更新、培訓、維護以及技術支援等關聯的系統管理成本。

WBEM 提供一個整合點,經由此點可存取管理來源的資料,而且它補充及延伸了現有的管理通訊協定與機制,例如簡易網路管理通訊協定 (SNMP)、桌面管理介面 (DMI) 以及 Common Management Information Protocol (CMIP)。

Windows Management Instrumentation 技術

Windows Management Instrumentation (WMI) 技術是管理基礎結構,它支援 CIM、管理物件格式 (MOF) 以及通用程式發展介面等語法。MOF 語法以人性化和機器可以閱讀的格式,定義 CIM 架構的結構與內容。Windows Management Instrumentation 提供一組功能強大的服務,包括以查詢為基礎的資訊擷取和事件通知。這些服務與管理資料是透過元件物件模型 (COM) 程式發展介面而存取。WMI 指令碼介面也提供指令碼支援。

WMI 技術提供:

  • 透過一組通用統一的介面來存取,以監視、命令以及控制任何受管理物件,無論基礎協調機制為何。WMI 是存取機制。

  • Windows 作業系統在操作、設定以及狀態方面的一致性模型。

  • COM 應用程式發展介面 (API),對所有管理資訊提供單一存取點。

  • 可與其他 Windows 管理服務交互操作。此方法可以簡化建立整合、架構完整之管理解決方案的程序。

  • 有彈性、可延伸的架構。開發人員撰寫稱為 WMI 提供者的程式碼模組,即可延伸資訊模型,以涵蓋新的裝置、應用程式等等。

  • 對 Windows Driver Model (WDM) 的延伸能夠從裝置驅動程式和核心端元件擷取協調資料與事件。

  • 功能強大的事件架構。如此能夠讓管理資訊變更能夠被識別、彙總、比較以及與其他管理資訊建立關聯。這些變更也可以轉送到本機或遠端的管理應用程式。

  • 豐富的查詢語言,能夠對資訊模型進行詳細的查詢。

  • 可編寫指令碼的 API,開發人員可用來建立管理應用程式。可編寫指令碼的 API 支援數種語言,包括 Microsoft Visual Basic;Visual Basic for Applications (VBA);Visual Basic, Scripting Edition (VBScript);Microsoft JScript 開發軟體。除了 VBScript 與 JScript 之外,開發人員也可以使用任何透過此 API 支援 Microsoft ActiveX 指令碼技術的指令碼語言實作 (例如,Perl 指令碼引擎)。此外,您可以使用 Windows Script Host 或 Microsoft Internet Explorer 撰寫使用此介面的指令碼。Windows Script Host,像是 Internet Explorer,是做為 ActiveX 指令碼引擎的控制器引擎。Windows Script Host 支援以 VBScript 與 JScript 撰寫的指令碼。

WMI 架構概觀

WMI 技術架構由下列項目組成:

  • 管理基礎結構:這包括 CIM 物件管理員,它為應用程式提供一致性的管理資料存取方式,以及管理資料的中央存放區域 (稱為 CIM 物件管理員存放庫)。

  • WMI 提供者:它們是做為 CIM 物件管理員與管理物件之間的媒介。提供者使用 WMI API 將管理物件的資料提供給 CIM 物件管理員,代表管理應用程式處理要求,然後產生事件通知。

管理基礎結構由 CIM 物件管理員與 CIM 物件管理員存放庫組成。應用程式依賴物件管理員來處理管理應用程式與資料提供者之間的介面。WMI 使用 COM 對 Windows 管理服務提供通用程式發展介面來實現這些通訊。此 COM API 提供事件通知與查詢處理服務,而且可用於數種程式發展語言環境,例如 C 與 C++。CIM 物件管理員存放庫保留了 CIM 和延伸架構,以及資料資訊或資料來源詳細資料。當 CIM 物件管理員為管理應用程式對於受管理物件的要求提供服務時,即使用此存放庫中的架構資料。

受管理物件是實體或邏輯企業元件,使用 CIM 建立模型。例如,受管理物件可以是纜線之類的硬體或資料庫應用程式之類的軟體。管理應用程式可以透過 CIM 物件管理員存取受管理物件。

管理應用程式是應用程式或 Windows 服務,可使用或處理來自受管理物件的資訊。管理應用程式透過 WMI API 的其中一個方法對 CIM 物件管理員提出要求,即可存取受管理物件資訊。

WMI 提供者是標準 COM 與分散式元件物件模型 (DCOM) 伺服器,它是做為受管理物件與 CIM 物件管理員之間的中繼程序。如果 CIM 物件管理員從管理應用程式收到要求,但 CIM 物件管理員存放庫無法提供要求的資料,或 CIM 物件管理員不支援要求的事件通知,它會將要求轉送給 WMI 提供者。提供者對特定網域的特定受管理物件提供資料與事件通知。

若要實作提供者,您應該使用下列其中一個受支援的伺服器類型:

• Microsoft Windows 2008 服務,本機或遠端。

• 標準執行檔 (.exe 檔),本機或遠端。

• 同處理序動態連結程式庫 (DLL)。

請注意,本機或遠端 Windows 2008 服務與標準執行檔是建議的伺服器類型。

WMI 隨附內建的提供者 (或標準提供者),它可以從來源 (例如系統登錄) 提供資料。內建提供者包括:

  • Active Directory 提供者:做為存放在 Active Directory 服務中所有資訊的閘道。允許使用單一 API 存取 WMI 與 Active Directory 中的資訊。

  • Windows Installer 提供者:允許透過 WMI 完全控制 Windows Installer 與軟體安裝。此外也提供與 Windows Installer 一起安裝之任何應用程式的資訊。

  • 效能計數器提供者:顯示原始效能計數器資訊,用來計算系統監視器工具中顯示的效能值。安裝在系統上的任何效能計數器將可以透過此提供者自動顯示。

  • 登錄提供者:允許建立、讀取以及寫入登錄機碼。修改指定的登錄機碼時可以產生 WMI 事件

  • SNMP 提供者:做為使用簡易網路管理通訊協定來進行管理之系統與裝置的閘道。可以讀取和寫入 SNMP MIB 物件變數。SNMP 設陷可以自動對應到 WMI 事件。

  • 事件記錄檔提供者:提供對 Windows Server 2008 事件記錄檔中資料與事件通知的存取。

  • Win32 提供者:提供有關作業系統、電腦系統、周邊裝置、檔案系統以及安全性資訊的相關資訊。

  • WDM 提供者:提供有關使用者輸入裝置、存放裝置、網路介面以及通訊連接埠的低階 Windows Driver Model 驅動程式資訊。

  • 檢視提供者:允許從現有類別建立新的彙總類別。您可以篩選來源類別以便只列出想要的資訊、將多個類別的資訊組合為單一類別,或是將多部電腦的資料彙總為單一檢視。

WMI 技術也支援協力廠商自訂提供者。自訂提供者可用來服務與環境專用之受管理物件相關的要求。提供者通常使用 MOF 語言來定義和建立類別。提供者使用 WMI API 來存取 CIM 物件管理員存放庫,並回應由應用程式初始提出的 CIM 物件管理員要求。

簡易網路管理通訊協定概觀

簡易網路管理通訊協定 (SNMP) 是網路管理標準,它定義用來管理 TCP/IP 網路的策略。

SNMP 使用分散式架構,其中包括:

  • 多個受管理節點,每個節點都有一個稱為代理程式的 SNMP 實體,提供對管理協調的遠端存取。

  • 至少要有一個 SNMP 實體稱為管理員,以執行管理應用程式來監視和控制受管理項目。受管理項目是主機、路由器之類的裝置;存取其管理資訊可以監視與控制它們。

  • 管理通訊協定 SNMP 是用來溝通管理工作站與代理程式之間的管理資訊。管理資訊是指受管理物件的集合,這些物件存放在稱為管理資訊庫 (MIB) 的虛擬資訊存放區。

SNMP 訊息

為溝通主機資訊,管理系統與代理程式會使用 SNMP 訊息。這些訊息是使用使用者資料包通訊協定 (UDP) 進行傳送,以及使用網際網路通訊協定 (IP) 在管理系統與主機之間路由傳送。

管理資訊庫包含管理系統要求的資訊。網路電腦的 MIB 可能包括的資訊如網路介面卡的設定與效能、可用的硬碟空間、驅動程式與應用程式的版本等等。您可以寫入與載入額外的 MIB,以公開適用於集合的資料,前提是系統本身必須支援所要求資訊的集合。

處理資訊要求

當管理系統要求資訊時,會發生下列結果:

  1. 管理系統使用代理程式的 IP 位址傳送要求到代理程式。

  2. 代理形成一個 SNMP 資料包,其中包含 SNMP 訊息與管理系統所屬的社群名稱。

  3. SNMP 代理程式接收資料包並確認社群名稱。若社群名稱是有效的,SNMP 代理程式會擷取適當資料。或者,如果社群名稱是無效的,則會拒絕要求。如果已設定代理程式來傳送驗證設陷,則會傳送設陷訊息。

  4. SNMP 資料包會隨著要求的資訊傳回管理系統。

訊息

會使用下列 SNMP 訊息類型:

  • GetThis 是要求訊息。SNMP 管理系統使用 Get 訊息,要求有關 SNMP 代理程式上 MIB 項目的資訊。

  • GetnextA 要求訊息類型,可用來瀏覽整個受管理物件的樹狀結構。

  • GetbulkA 要求類型,可指定代理程式在訊息大小限制範圍內儘可能傳輸最多資料。

  • SetThis 是用來將更新的 MIB 值傳送和指派給代理程式。

  • NotifyThis 或 TrapThis 是未經同意的訊息,當代理程式偵測到受管理主機的本機上發生特定類型的事件時,就會傳送該訊息到 SNMP 管理系統。

SNMP 事件 (或設陷) 是在未經同意的情形下傳送到篩選事件的管理工作站,因此,其中牽涉到網路流量。使用 WMI 可在本機篩選事件,而且只有通過篩選條件的事件會透過網路傳送,進而降低指定之事件所需的頻寬。

SNMP 的 WMI SDK 支援

SNMP 提供者包括下列元件:

  • 類別、執行個體以及事件提供者,它們可以將 SNMP 資訊模型與處理整合到 WMI。這些 SNMP 提供者將物件值集合對應到 CIM 類別執行個體的屬性值。

  • SNMP 資訊模組編譯器,可將原始 SNMP 架構資訊編譯成 CIM 使用的格式。

SNMP 提供者

SNMP 提供者傳回動態資訊。您可以使用兩種方式之一,指定執行個體提供者將要操作的一組類別:

  • 靜態 - 在與 Proxy 裝置關聯的 CIM 物件存放庫命名空間中建立類別。

  • 動態 - 使用 SNMP 類別提供者,傳回位於 SNMP 模組資訊存放庫 (SMIR) 命名空間中的一組類別。

此外,您也可以指定是否對從 SMIR 命名空間傳回的一組類別使用相互關聯。相互關聯的類別定義一組類別,已知在列舉發生的時候特定 SNMP 代理可以支援該類別。無相互關聯的列舉會傳回 SMIR 命名空間內出現的所有類別,無論代理程式裝置是否支援這些類別。

SNMP 提供者包括:

  • SNMP 類別與執行個體提供者,應用程式用它們來存取和修改與 SNMP 裝置有關的資料。

  • SNMP 事件提供者,從 SNMP 設陷與通知產生事件。這些提供者會報告相同類型的事件,但是格式不同:Encapsulated (壓縮) 與 Referent (參照)。壓縮表示事件類別具有簡單屬性,此屬性說明直接從 TRAP-TYPE 與 NOTIFICATION-TYPE 巨集對應的資訊,於下節中說明。參照類別摘要巨集內出現的資訊,如此一來,共用相同類別與執行個體的屬性會顯示為內嵌物件。這種方式能夠擷取 __RELPATH,其結果是收到事件後即可擷取與設陷關聯的唯一執行個體。為選擇格式,取用者必須登錄特定事件類別。

將裝置資料對應到 CIM 類別

SNMP 提供者會透過下列方法將裝置資料對應到 CIM 類別:

  • 列舉 SNMP 類別定義。若要列舉一組類別定義,應用程式可以呼叫 IWbemServices::CreateClassEnum 或 IWbemServices::CreateClassEnumAsync。

    MIB 物件會使用 OBJECT-TYPE 巨集對應到 SNMP CIM 類別;事件則使用 TRAP-TYPE 與 NOTIFICATION-TYPE 巨集對應到類別。

    OBJECT-TYPE 巨集是用來描述 MIB 物件的基本性質。SNMPv1 TRAP-TYPE 和 SNMPv2C NOTIFICATION-TYPE 巨集則描述 SNMP 事件的性質。

  • 起始 SNMP 類別定義。若要起始類別定義,應用程式可以呼叫 IWbemServices::GetObject 或 IWbemServices::GetObjectAsync。

  • 列舉 SNMP 類別執行個體。SNMP 執行個體提供者會為下列要求提供服務:列舉與代表裝置 MIB 關聯之類別的執行個體。

  • 起始 SNMP 類別執行個體。SNMP 執行個體會處理下列要求:起始代表 MIB 物件的類別執行個體。

  • 擷取 SNMP 類別執行個體。為擷取 SNMP CIM 類別的特定執行個體,應用程式可以呼叫 IWbemServices::GetObject 或 IWbemServices::GetObjectAsync。

SNMP 與 CIM 架構

SNMP 用來定義物件的架構,與用於 WMI 通用訊息模型的架構不同。SNMPv1 與 SNMPv2 架構稱為管理資訊結構 (SMI,Structure of Management Information),它是封裝為 MIB 檔案。為了定義物件,MIB 檔案會使用 Abstract Syntax Notation 1 (ASN.1) (一種標準語言) 以及巨集定義 (用來做為說明物件的範本)。這些巨集提供物件的相關資訊,包括物件的名稱、識別碼、語法、說明、存取權等等。

WMI SNMP 提供者會轉換這些 MIB 巨集:

  • OBJECT-TYPE 說明物件的基本特性,例如物件名稱、語法、存取權等等。與 SNMPv1 和 SNMPv2C 相關。

  • TEXTUAL-CONVENTION 指派名稱,而且在某些情況中,會指派範圍內的值到現有資料類型。僅與 SNMPv2C 相關。

  • TRAP-TYPE 說明事件訊息 (設陷)。僅與 SNMPv1 相關。

  • NOTIFICATION-TYPE 說明事件訊息 (通知)。僅與 SNMPv2C 相關。

SNMP 類別提供者對 CIM 命名空間列舉和起始一組類別定義。使用 MIB 交互碼與 SNMP 模組資訊存放庫 (SNMP 架構資料庫) 可以執行這個動作。SNMP 類別提供者支援相互關聯和非相互關聯模式。設定與布林值類型相互關聯的內容值 (IWbemContext) 並將此值傳遞到 IWbemServices 方法,可以指定這兩種模式的其中一種。SNMP 類別提供者支援類別定義列舉與類別定義擷取兩者。

SNMP 執行個體提供者將 SNMP MIB 物件對應到類別執行個體。

SNMP 命名空間

若要定義網路裝置檢視,必須使用 SNMP 命名空間。使用 WMI SDK 的 WMI Common Information Model (CIM) Studio 應用程式,編譯 MOF 檔案,或使用 WMI API 設計程式,可以建立 SNMP 命名空間。

命名空間系統類別是用來表示 SNMP 命名空間。若要產生新的命名空間,可以建立此類別的執行個體。您必須將類別執行個體與至少一個描述元 (或辨識符號) 建立關聯。辨識符號包含適用於特定實作的內容資訊,並傳輸定義 SNMP 提供者如何存取 SNMP 代理程式的屬性。

SNMP 裝置表示法

SNMP 裝置在 WMI 內是使用 Proxy 命名空間 (包含一組執行個體辨識符號) 來表示。這些辨識符號說明與裝置有關的傳輸特性。WMI 使用 MOF 檔案 snmpreg.mof 來建立 \\.\root\snmp\localhost 命名空間,這是表示本機 SNMP 代理程式的標準命名空間。

SNMPv2C

SNMPv2C 在 WMI 內容內是可以支援的。SNMPv2C 的主要目的是為 SNMP 提供更強的資訊安全內容。此版本使用簡單但較不安全的密碼驗證功能,又稱為社群功能 (SNMPv1 中有提供)。SNMPv2 SMI 對社群安全性提供新增與加強功能,例如包括 SNMPv1 SMI 特定資料類型的位元字串、網路位址以及計數器。此外,SNMPv2 SMI 會指定資訊模組,指定一組相關定義。SNMPv2 也定義兩個新的通訊協定操作:GetBulk 與 Inform。

安全性

WMI 安全性會為本機電腦與遠端存取驗證使用者的登入資訊。WMI 會將整個 CIM 存放庫的適當受控制存取權授與通過驗證的使用者。目前的 WMI 版本不對系統資源 (例如個別類別與執行個體) 提供安全性。不過,系統管理員可以使用 WMI 控制架構操作上的通用權限,例如將某些使用者的存取權限制為只能執行唯讀操作。WMI 也支援每個命名空間的安全性。此外,SNMP 提供者還能夠支援所有 SNMP 的安全性,包括 SNMPv2C 中的安全性增強。

SNMP 資訊模組編譯器

SNMP 資訊模組編譯器是用來將 MIB 中定義的原始 SNMP 管理資訊,編譯成對應的 CIM 架構定義,以便搭配 SNMP 提供者使用。CIM 架構可做為 MOF 檔案的輸出或載入到 SNMP 架構資料庫 (SNMP 模組資訊存放庫或 SMIR)。SNMP 動態類別提供者使用 SNMP 模組資訊存放庫來建立和擷取類別定義的執行個體。

SNMP 資訊模組編譯器會在命令列模式以執行檔方式執行,它使用一個 SNMP 資訊模組做為輸入,而且可能需要其他檔案來解析外部參照。SNMP 資訊模組是一個管理資訊集合,通常由 MIB 模組的組合、AGENT-CAPABILITIES 以及 MODULE-COMPLIANCE 陳述式組成。AGENT-CAPABILITIES 陳述式描述代理程式對其支援的一組 MIB 模組的符合性。MODULE-COMPLIANCE 陳述式描述有關物件定義的代理程式功能。

SNMP 資訊模組編譯器也提供下列功能:

  • 在資訊模組上執行檢查操作。例如,它會對附屬模組中的資訊檢查本機語法與外部參照。

  • 從 SMIR 移除之前載入的所有資料,或從一個資訊模組移除載入的資料。

  • 傳回指定檔案的 ASN.1 模組名稱,或指定檔案中所有匯入模組的 ASN.1 模組名稱。

  • 傳回 SMIR 中目前載入的所有 SNMP 資訊模組的 ASN.1 模組名稱。

  • 執行自動解析匯入的模組,而不是要求使用者手動指定所需的模組。

  • 執行不會產生輸出的幕後載入模式,但是可以用來在安裝操作期間將資料載入 SMIR。

請參閱