麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 操作系統 > 正文

wmi入門

2024-06-28 16:03:46
字體:
來源:轉載
供稿:網友

什么是 WMI?

WMI最初于 1998 年作為一個附加組件與 Windows NT 4.0 Service Pack 4 一起發行,是內置在 Windows 2000、Windows xp 和 Windows Server 2003 系列操作系統中核心的管理支持技術。基于由 Distributed Management Task Force (DMTF) 所監督的業界標準,WMI 是一種規范和基礎結構,通過它可以訪問、配置、管理和監視所有的 — 幾乎所有的 Windows 資源。

要掌握 WMI 的強大功能和范圍,需要考慮以前(或者現在)如何管理并監視 Windows 工作站和服務器。您可能用過或仍在使用眾多的圖形化管理工具來管理 Windows 資源 — 例如磁盤、事件日志、文件、文件夾、文件系統、網絡組件、操作系統設置、性能數據、打印機、進程、注冊表設置、安全性、服務、共享、用戶、組等等。

盡管圖形化工具提供了一種功能管理解決方案,它們所共有的東西是什么呢?一種答案是,在 WMI 之前,所有的 Windows 圖形化管理工具都依賴于 Win32 應用程序編程接口(application PRogramming Interfaces,APIs)來訪問和管理 Windows 資源。為什么?因為在 WMI 之前,能夠以編程方式訪問 Windows 資源的惟一方法就是通過 Win32 API。這種情況使 Windows 系統管理員無法通過一種簡便的方法利用常見的腳本語言來自動化常用的系統管理任務,因為大多數腳本語言都不能直接調用 Win32 API。通過提供一致的模型和框架,WMI 改變了這種情況 — 通過模型和框架,所有的 Windows 資源均被描述并公開給外界。最好的一點是,系統管理員可以使用 WMI 腳本庫創建系統管理腳本,從而管理任何通過 WMI 公開的 Windows 資源!

使用 Windows Script Host 和 Microsoft Visual Basic Scripting Edition (VBScript),或任何支持 COM 自動化的腳本語言(例如,ActiveState Corporation 的 ActivePerl),可以編寫腳本來管理和自動化企業系統、應用程序和網絡的下列方面:

?

Windows Server 2003、Windows XP 專業版和 Windows 2000 系統管理。您可以編寫腳本來檢索性能數據,管理事件日志、文件系統、打印機、進程、注冊表設置、計劃程序、安全性、服務、共享以及很多其他的操作系統組件和配置設置。

?

網絡管理。您可以創建基于 WMI 的腳本來管理網絡服務,例如 DNS、DHCP 和啟用 SNMP 的設備。

?

實時健全監視。使用 WMI 事件訂閱,您可以編寫代碼以在事件發生時監視并響應事件日志項,監視并響應文件系統、注冊表修改及其他實時的操作系統更改。基本上對 WMI來說,WMI 事件訂閱和通知是在 SNMP 環境中 SNMP 陷阱是什么。

?

Windows .NET 企業服務器管理。您可以編寫腳本來管理 Microsoft Application Center、Operations Manager、Systems Management Server、Internet Information Server、Exchange Server 和 SQL Server。

 

快速啟動到 WMI 腳本

為了讓您對 WMI 腳本是什么有一些概念,讓我們來看看一個表面看來不怎么重要的任務 — 檢索安裝在基于 Windows 的遠程計算機中的物理內存的總量。在 WMI 之前,如果沒有另外的第三方工具,是不能通過一個腳本來輕松完成這個任務的。實際上,在 WMI 之前,使用包括操作系統工具的工具確定安裝在計算機中內存數量的惟一方法是通過系統屬性對話框。今天,如果目標計算機上安裝了 WMI,并且有計算機的管理員訪問權限,您就可以使用一個 WMI 腳本來檢索在遠程 Windows 計算機上安裝的物理內存量,如清單 1 中所示的一樣簡單。

清單 1:使用 WMI 和 VBScript 檢索總物理內存

strComputer = "atl-dc-01"Set wbemServices = Getobject("winmgmts://" & strComputer)Set wbemObjectSet = wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")For Each wbemObject In wbemObjectSet     WScript.Echo "Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemoryNext

要運行清單 1 中的示例腳本,將其復制并粘貼到您最常用的文本編輯器中(notepad.exe 也可以),將分配給 strComputer 變量的值更改為域中一個有效的啟用 WMI 的計算機,保存腳本(擴展名為 .vbs),并如圖 1 所示運行腳本。

scripting06112002_fig1

圖 1:GetMemory.vbs 輸出

有點不可思議,無須任何錄入,您應該會看到目標計算機的物理內存量回顯到控制臺。

現在,在你說“天哪!真的用六行腳本來檢索一臺計算機中的內存數量?”之前,讓我們先礼貌地插幾句話,因為至今尚不明顯的是,您可以使用與在清單 1 中所演示的相同的基本步驟,從任何通過 WMI 公開的 Windows 資源檢索配置和狀態信息。

假設您想要檢索安裝在一臺遠程計算機上的所有服務的名稱、狀態和啟動類型。清單 2 中的示例腳本完全使用清單 1 中使用過的相同的基本步驟來完成。

清單 2:使用WMI 和 VBScript 檢索服務信息

strComputer = "atl-dc-01"Set wbemServices = Getobject("winmgmts://" & strComputer)Set wbemObjectSet = wbemServices.InstancesOf("Win32_Service")For Each wbemObject In wbemObjectSet     WScript.Echo "Display Name:   " & wbemObject.DisplayName & vbCrLf & _                  "    State:       " & wbemObject.State        & vbCrLf & _                  "    Start Mode: " & wbemObject.StartModeNext

運行清單 2 生成如圖 2 中所示的輸出。

scripting06112002_fig2

圖 2:GetServices.vbs 輸出

假設您對服務不感興趣,但是需要從 Windows 事件日志檢索記錄。再次使用清單 1 中的腳本模板,您可以很容易地讀取 Windows 事件日志,如清單 3 中所演示。在您運行清單 3 之前我們要指出的是,如果您的事件日志包含數千個記錄,示例腳本可能需要用很長的時間運行。

清單 3:讀取 Windows 事件日志記錄

strComputer = "atl-dc-01"Set wbemServices = Getobject("winmgmts://" & strComputer)Set wbemObjectSet = wbemServices.InstancesOf("Win32_NTLogEvent")For Each wbemObject In wbemObjectSet     WScript.Echo "Log File:         " & wbemObject.LogFile         & vbCrLf & _                  "Record Number:    " & wbemObject.RecordNumber    & vbCrLf & _                  "Type:             " & wbemObject.Type            & vbCrLf & _                  "Time Generated:   " & wbemObject.TimeGenerated   & vbCrLf & _                  "Source:           " & wbemObject.SourceName      & vbCrLf & _                  "Category:         " & wbemObject.Category        & vbCrLf & _                  "Category String: " & wbemObject.CategoryString & vbCrLf & _                  "Event:            " & wbemObject.EventCode       & vbCrLf & _                  "User:             " & wbemObject.User            & vbCrLf & _                  "Computer:         " & wbemObject.ComputerName    & vbCrLf & _                  "Message:          " & wbemObject.Message         & vbCrLfNext

如果我們仔細檢查清單 1、2 和 3,我們會得出關于這三個腳本的兩個非常重要的觀察結果。第一個觀察結果是,所有三個腳本都執行相同的三個步驟:腳本連接到 WMI,檢索一個 WMI 托管資源,并回顯資源的幾個屬性。第二個重要的觀察結果是,在每個腳本中,惟一的更改是標識目標資源的類名(即分別為 Win32_LogicalMemoryConfiguration、Win32_Service 和 Win32_NTLogEvent),以及資源的相應屬性。

腳本中使用的三個步驟,對于任何用于檢索 WMI 托管資源信息的 WMI 腳本來說是共同的。讓我們稍詳細一些地看一下每個步驟。

步驟 1:連接到 WMI 服務

在任何 WMI 腳本中,第一個步驟都是建立一個到目標計算機上的 Windows 管理服務的連接。連接到在本地或遠程計算機上的 WMI 與調用 VBScript 的 Getobject 函數并將 WMI 腳本庫的名字對象的名稱(即“winmgmts:”,后跟目標計算機的名稱)傳遞到 Getobject 一樣簡單。

用這種方法連接到 WMI,返回一個對 SWbemServices 對象的引用,我們使用清單 1、2、3 中的名為 wbemServices 的變量來引用該對象。SWbemServices 是在 WMI 腳本庫中定義的一打左右的對象中的一個。WMI 腳本庫提供一組用于訪問 WMI 基礎結構的通用對象腳本。一旦有一個對 SWbemServices 對象的引用,您就可以調用任何提供了 SWbemServices 的方法;InstancesOf 就是此種方法中的一個。

步驟 2:檢索 WMI 托管資源的實例

普遍認為,第二個步驟主要取決于要執行的任務。在檢索 WMI 托管資源的信息中,步驟 2 與調用 SWbemServices 對象的 InstancesOf 方法一樣簡單。正如方法名所示,InstancesOf 返回由資源的類名標識的托管資源的所有實例。InstancesOf 以一個 SWbemObjectSet 集合的形式返回所需的資源,通過使用名為 wbemObjectSet 的變量我們在清單 1、2、3 中引用它。SWbemObjectSet 是 WMI 腳本庫中定義的另一個腳本對象。

步驟 3:顯示 WMI 托管資源的屬性

最后一個步驟是枚舉 SWbemObjectSet 集合的內容。SWbemObjectSet 中的每個項都是一個 SWbemObject(WMI 腳本庫中的另外一個對象) — 表示所需資源的一個單個實例。使用 SWbemObject 來訪問托管資源類定義中定義的方法和屬性。

那么,如果從 WMI 檢索信息的腳本編寫步驟都是相同的,Win32_LogicalMemoryConfiguration、Win32_Service 和 Win32_NTLogEvent 類是什么呢?此外,它們來自哪里?哪些其他的類是可用的?還有,如何使用它們?這些問題的答案分散在構成 WMI 體系結構的各組件中。讓我們來看一下。

 

WMI 體系結構

WMI 體系結構由三個主層組成,如圖 3 所示:

托管資源

WMI 基礎結構

使用者

scripting06112002_fig3

圖 3 : WMI 體系結構

我們將從最低層開始,因為資源是駐留在那里的。

 

托管資源

托管資源是任意邏輯或物理組件,通過使用 WMI 進行公開和管理。可以使用 WMI 管理的 Windows 資源包括:計算機系統、磁盤、外圍設備、事件日志、文件、文件夾、文件系統、網絡組件、操作系統子系統、性能計數器、打印機、進程、注冊表設置、安全性、服務、共享、SAM 用戶和組、Active Directory、Windows 安裝程序、Windows 驅動程序模式 (WDM) 設備驅動程序,以及 SNMP 管理信息基 (MIB) 數據等。WMI 托管資源通過一個提供程序與 WMI 通訊。當開始編寫腳本來與 WMI 托管資源交互時,您經常會看到一個術語實例,它被用于引用在運行中的腳本中的托管資源的虛擬表示形式。

 

WMI 基礎結構

中間層是 WMI 基礎結構。WMI 由三個主要組件構成:公共信息模型對象管理器(Common Information Model Object Manager,CIMOM)、公共信息模型(Common Information Model,CIM)儲存庫,以及提供程序。這三個 WMI 組件共同提供通過其定義、公開、訪問和檢索配置和管理數據的基礎結構。雖然小,但是對編寫腳本來說絕對不可或缺的第四個組件是 WMI 腳本庫。

WMI 提供程序

WMI 提供程序在 WMI 和托管資源之間扮演著中間方的角色。提供程序代表使用者應用程序和腳本從 WMI 托管資源請求信息,并發送指令到 WMI 托管資源。例如,清單 1 和清單 2 使用內置 Win32 提供程序來檢索內存和服務相關信息。清單 3 使用內置的事件日志提供程序來從 Windows 事件日志檢索記錄。

通過將托管資源公開給基于 WMI 標準的、統一訪問模型的 WMI 基礎結構,提供程序隱藏托管資源獨有的實現詳細信息。WMI 提供程序使用托管資源本機 API 與其相應的托管資源通訊,使用 WMI 編程接口與 CIMOM 通訊。例如,內置的事件日志提供程序調用 Win32 事件日志 API 來訪問事件日志。

基于 WMI 的可擴展體系結構,軟件開發人員可以開發并集成附加提供程序來公開其產品特有的管理函數。監視 Exchange 連接器狀態的 Exchange Server 2000 提供程序就是一個這樣的示例。同樣,Application Center、Operations Manager、Systems Management Server、Internet Information Server 和 SQL Server 都包含 WMI 提供程序。

提供程序通常作為駐留在 %SystemRoot%/system32/wbem 目錄中的動態鏈接庫 (DLL) 實現。WMI 包括很多針對Windows 2000、Windows XP 以及 Windows Server 2003 系列操作系統的內置提供程序。內置提供程序(也被稱為標準提供程序),從已知的操作系統源(如 Win32 子系統、事件日志、性能計數器、注冊表等)提供數據和管理函數。表 1 中列出一些包含在 Windows 2000、Windows XP 和 Windows Server 2003 系列操作系統中的 WMI 提供程序。

提供程序

DLL

命名空間

說明

Active Directory 提供程序

dsprov.dll

root/directory/ldap

將 Active Directory 對象映射到 WMI。

事件日志提供程序

ntevt.dll

root/cimv2

管理 Windows 事件日志,例如,讀取、備份、清除、復制、刪除、監視、重命名、壓縮、解壓縮和更改事件日志設置。

性能計數器提供程序

wbemperf.dll

root/cimv2

提供對原始性能數據的訪問。

注冊表提供程序

stdprov.dll

root/default

讀取、寫入、枚舉、監視、創建、刪除注冊表項和值。

SNMP 提供程序

snmpincl.dll

root/snmp

提供對 SNMP MIB 數據的訪問,并從 SNMP 托管設備捕獲。

WDM 提供程序

wmiprov.dll

root/wmi

提供對 WDM 設備驅動程序中信息的訪問。

Win32 提供程序

cimwin32.dll

root/cimv2

提供關于計算機、磁盤、外圍設備、文件、文件夾、文件系統、網絡組件、操作系統、打印機、進程、安全性、服務、共享、SAM 用戶及組,以及更多資源的信息。

Windows 安裝程序提供程序

msiprov.dll

root/cimv2

提供對已安裝軟件信息的訪問。

Windows XP 和 Windows Server 2003 包含很多附加的標準提供程序。如需標準提供程序的完整列表,參見 WMI Software Developers Kit (SDK) 文檔中的 WMI 提供程序參考。

CIMOM

CIMOM(讀作 see-mom)處理使用者和提供程序之間的交互。這一術語是來自于基于 Web 的企業管理軟件和由 Distributed Management Task Force 維護的公共信息模型規范。

您可以將 CIMOM 想象為 WMI 信息代理。所有的 WMI 請求和數據都經過 CIMOM。Windows Management Instrumentation 服務 (winmgmt.exe),在 Windows XP 和 Windows Server 系列操作系統上提供了 CIMOM 角色,在通用服務主機進程 (svchost.exe) 的控制下運行。

注 在運行 Windows 2000 或 Windows NT 4.0 Service Pack 4 的計算機上,WMI 服務作為一個單獨的服務進程運行。在運行 Windows Millennium Edition (Me)、Windows 98 或 Windows 95 OSR 2.5 的計算機上,WMI 作為一個標準可執行進程運行。

除了提供公共接口(使用者通過它訪問 WMI)之外,CIMOM 還向 WMI 基礎結構提供下列核心服務:

提供注冊。WMI 利用 CIMOM 提供注冊位置和功能信息。此信息存儲在 CIM 儲存庫中。

請求傳送。CIMOM 使用提供程序注冊信息,將使用者請求傳送到合適的提供程序。

遠程訪問。使用者通過連接到遠程系統上的 CIMOM 訪問啟用 WMI 的遠程系統。一旦連接建立,使用者可以執行與在本地可以執行的操作相同的操作。

安全性。在本地計算機或是遠程計算機上,允許用戶在連接到 WMI 之前通過驗證每個用戶的訪問標記,CIMOM 控制對 WMI 托管資源的訪問。WMI 并不覆蓋或阻止由操作系統提供的安全性。

查詢處理。允許使用者使用 WMI 查詢語言(WMI Query Language,WQL)發出關于任何 WMI 托管資源的查詢。例如,您可以查詢所有發生在過去 24 小時的,符合一個特定事件 ID 的事件的事件日志。CIMOM 只在提供程序本身不支持查詢操作的情況下執行查詢計算。

事件處理。允許使用者訂閱表示對 WMI 托管資源更改的事件。例如,您可以訂閱表明邏輯磁盤驅動器上的空間何時下降到可接受的閾值以下的事件。CICOM 按一個指定的間隔輪詢托管資源,并在滿足訂閱條件時生成一個事件通知。

管理應用程序、管理工具和腳本調入 CIMOM 以挖掘數據、訂閱事件或執行一些其他的與管理相關的任務。CIMOM 獲得必需的提供程序和類信息以滿足來自 CIM 的使用者的請求。CIMOM 使用從 CIM 獲得的信息,將使用者的請求傳遞到合適的提供程序。

CIM 儲存庫

WMI 的基本思想是 — 可以用一個架構統一表示來自不同源的配置和管理信息。CIM 就是這個架構,還調用了模型化托管環境和定義每個由 WMI 公開的數據塊的對象儲存庫或類存儲。該架構基于 DMTF 公共信息模型標準。

與建立在類概念基礎上的 Active Directory 的架構非常相似,CIM 由類 組成。類是一個 WMI 托管資源的一個藍圖。然而,不同于 Active Directory 類表示創建并存儲在目錄中的對象,CIM 類通常表示動態資源。就是說,資源的實例并不存儲在 CIM 中,而是通過基于使用者請求的提供程序動態檢索。其原因很簡單,大多數 WMI 托管資源的操作狀態更改很頻繁,因而必須按需讀取以確保檢索的是最新的信息。

注 在 CIM 的上下文中,儲存庫這一術語有些被誤解。盡管 CIM 是一個儲存庫,而且能夠存儲靜態數據,但其主要角色是存儲托管資源的藍圖。

與 Active Directory 類相似之處還有就是,CIM 類是分級組織的,每一級的子類從父類繼承。DMTF 維護一組核心和公共基類,系統和應用程序軟件開發人員(如 Microsoft 的那些)從這些類派生和創建系統(或應用程序)特定的擴展類。

類被分組到命名空間 中,命名空間是表示一個特定的管理區域的類邏輯組。例如,命名空間 root/cimv2 包括大部分表示通常與計算機和操作系統相關聯的資源的類。在前面的腳本中使用的類(Win32_LogicalMemoryConfiguration、Win32_Service 和Win32_NTLogEvent)駐留在命名空間 root/cimv2,它們只是在 CIM 中定義的數百個類中的三個。

CIM 類由屬性和方法構成。屬性描述 WMI 托管資源的配置和狀態,方法是在 WMI 托管資源上執行操作的可執行函數。

注 不要將由 CIM 定義的方法和屬性與由 WMI 腳本庫中的自動化對象提供的方法和屬性相混淆。

從物理校對看,CIM 駐留在 %SystemRoot%/system32/wbem/Repository/FS/ 目錄中,由下列 4 個文件組成:

index.btr。二叉樹 (btree) 索引文件。

index.map。事務控制文件。

objects.data。存儲托管資源定義的 CIM 儲存庫。

objects.map。事務控制文件。

注 在 Microsoft Windows 2000 和 Windows NT 4.0 Service Pack 4 中,CIM 存儲在 %SystemRoot%/system32/wbem/Respository/cim.rep 中。在 Windows Millennium Edition (Me)、Windows 98 和 Windows 95 OSR 2.5 操作系統中,CIM 存儲在 %windir%/system/wbem/Respository/cim.rep 中。

雖然 CIM 基于面向對象的設計原則,但是您無須成為信息建模或架構設計的專家,就可以有效地使用 WMI 并編寫基于 WMI 的腳本。重要的是您了解 CIM 的基礎結構和組織,并了解如何瀏覽和解釋它的內容。

WMI 腳本庫

WMI 腳本庫提供自動化對象集,腳本語言(如 VBScript、Jscript 及 ActiveState 的 ActivePerl)利用它訪問 WMI 基礎結構。

WMI 腳本庫中的自動化對象為 WMI 基礎結構提供一個一致且統一的腳本模型。如前面所示,一旦您了解如何使用 WMI 腳本庫檢索一個托管資源類型,您就可以輕松使用相同的步驟來檢索其它的 WMI 托管資源。例如,您可以使用前面列出的 3 個腳本中的任何一個,并很容易地修改這個腳本來檢索在遠程計算機上運行的進程 (Win32_Process) 信息、處理器 (Win32_Processor) 信息、操作系統 (Win32_OperatingSystem) 信息,或者由 WMI 公開的數百個托管資源中的任何一個。

WMI 腳本庫在一個名為 wbemdisp.dll 的單個 DLL 中實現,該 DLL 物理駐留于 %SystemRoot%/system32/wbem 目錄中。WMI 腳本庫還包括一個名為 wbemdisp.tlb 的類型庫。您可以使用 WMI 腳本類型庫來從基于 xml 的 Windows 腳本文件(擴展名為 .wsf 的 WSH 腳本)引用 WML 常數。

WMI 使用者

使用者是頂層。使用者是腳本、企業管理應用程序、基于 Web 的應用程序,或其他管理工具,它們通過 WMI 基礎結構訪問并控制可用信息。

注 很多管理應用程序擔當 WMI 使用者和 WMI 提供程序的雙重角色。有數種 Microsoft 管理產品都屬于這種情況,如 Application Center、Operations Manager 以及 Systems Management Server。

 

瀏覽 CIM

我們已經討論了相當一部分的內容,但是還留有一個細節沒有談到,那就是如何確定哪些資源是通過 WMI 公開的。幸運的是,您可以使用多種不同工具來瀏覽 CIM 架構并檢查 WMI 托管資源的類定義。

WMI 控件。WMI 控件 (wmimgmt.msc) 是一個 Microsoft 管理控制臺 (MMC) 管理單元,它允許您在本地或遠程計算機上配置 WMI 設置。盡管您不能使用 WMI 控件瀏覽 CIM,但是可以使用該工具的“安全性”選項卡來確定在本地或遠程計算機上可用的 CIM 命名空間。有關更多使用 WMI 控件的信息,參閱 Windows 2000 幫助或 Windows XP 幫助和支持中心內的 WMI 控件概述。

WMI 測試器。WMI 測試器 (wbemtest.exe) 是一個用于與 WMI 基礎結構交互的通用、圖形化工具。您可以使用 WMI 測試器來瀏覽 CIM 架構并檢查托管資源類定義。WMI 測試器還可用于執行與基于 WMI 的腳本執行的相同的操作,例如檢索托管資源的實例和運行查詢。WMI 測試器是在所有啟用了 WMI 的計算機上默認的 WMI 安裝的一部分,因此 wbemtest.exe 是一個出色的 WMI 學習和疑難解答工具。有關使用 WMI 測試器的信息,參閱 Windows XP 幫助和支持中心內的 WMI 測試器概述。

WMI 命令行。作為 Windows XP 的一部分發布的 WMI 命令行工具 (wmic.exe) 提供一個到 WMI 基礎結構的命令行接口。可以使用 wmic.exe 執行來自命令行的常見 WMI 任務,包括瀏覽 CIM 和檢查 CIM 類定義。有關使用 WMI 命令行工具的信息,參閱 Windows XP 幫助和支持中心內的“使用 WMI 命令行 (WMIC) 工具”

CIM Studio。作為 WMI SDK 的一部分,CIM Studio 提供一個基于 Web 的界面實現與 WMI 基礎結構交互。與 WMI 測試器一樣,您可以使用 CIM Studio 來瀏覽 CIM 架構、查看類定義并檢索托管資源的實例。通過 CIM Studio 的超級用戶界面可輕松查看類關系和關聯,而且 CIM Studio 提供一個基本的搜索工具 — 它們是 WMI 測試器工具所不具備的兩個功能。要使用 CIM Studio,您必需下載并安裝 WMI SDK。您可以從 Windows Management Instrumentation (WMI) SDK 下載 WMI SDK。

EnumClasses.vbs 和 EnumInstances.vbs。Windows 2000 Server 資源工具箱包括很多利用了 WMI 的強大功能的腳本。這里所列出的三個腳本是常見腳本,可用于瀏覽 CIM 架構、查看類定義以及檢索托管資源的實例。

您應該查看的一些附加資源包括:

WMI SDK 文檔。WMI SDK 包含一個由標準的 WMI 提供程序提供的類的完整列表。您可以訪問 MSDN 聯機庫中的 WMI SDK 文檔。

TechNet 腳本中心。如果您愿意,可以把它叫做無用的廢物,但是TechNet 腳本中心包含數百個來自即將推出的 System Administration Scripting Guide 中的基于 WMI 的示例腳本。

WMI 測試器 (wbemtest.exe) 演練

現在,您對可用于瀏覽和查看 CIM 的工具已經有了一些認識,讓我們使用 WMI 測試器 (wbemtest.exe) 來檢查 Win32_Process 類定義并修改清單 2,以便從在您的本地計算機上運行的進程檢索一些屬性。

打開一個命令提示,鍵入 C:/>wbemtest.exe,按下 Enter 來開始 WMI 測試器工具。請注意,大部分按鈕在主 WMI 測試器窗口上是被禁用的,這說明此時您沒有連接到 WMI。

單擊 Connect? 連接到本地或遠程計算機上的 WMI 服務。顯示“連接”對話框,它提供一個標記為 Namespace 的文本輸入區域,該區域默認值為 root/default。將 Namespace 區域的值更改為 root/cimv2,單擊“連接”對話框的 Connect 按鈕返回到主 WMI 測試器窗口。

主窗口中左上角的命名空間標識符應該顯示為 root/cimv2。請注意,所有的按鈕現在都已啟用,這說明在當前憑據環境下,您已經成功連接到本地主機上的 WMI。單擊 Enum Classes? 打開“超類信息”對話框。

在“超類信息”對話框中,不要填寫 Enter superclass name 區域,單擊 Recursive 選項,單擊 OK 以枚舉 root/cimv2 名稱空間中定義的所有 CIM 類。

此時,您可能應該正在查看一個列出了數百個類定義的“查詢結果”對話框。類的數量主要取決于您正在運行的 Windows 的版本。例如,如果使用 Windows 2000,則您應該會看到大約 600 個類定義。如果運行 Windows XP,則您應該會看到大約 900 個類定義。

請注意,列于“查詢結果”對話框頂部的類是以兩個下劃線為開頭的。這些是系統類。系統類是預定義的 CIM 類,支持內部 WMI 配置與操作,例如提供程序注冊、命名空間安全性及事件通知等。現在,忽略系統類,向下滾動“查詢結果”對話框直至看到以 CIM_ 開頭的類。

名稱以 CIM_ 開頭的類是由 DMTF 維護的核心與公共基類。繼續向下滾動直至到達以 Win32_ 開頭的類。

名稱以 Win32_ 開頭的類是 Microsoft 擴展類,表示 Windows 特定的托管資源。如果這是您第一次檢查 root/cimv2 命名空間,您可能希望熟悉 root/cimv2 命名空間中的類的完整集合,尤其是有 Win32_ 前綴的類。

向下滾動“查詢結果”對話框直至到達 Win32_Process 類,雙擊該類名打開 Win32_Process 對話框的對象編輯器。

“對象編輯器”對話框顯示被選定類的定義和實現的詳細信息(屬性和方法)。回憶一下我們之前討論的內容 — 類定義是 WMI 可管理資源的藍圖。

選擇 Hide System Properties 復選框隱藏系統屬性。剩余的 Win32_Process 屬性表示您可以從在本地或遠程計算機上運行的進程檢索的信息。

要完成您的 WMI 腳本練習,嘗試去檢索 Name、Handle 和 ProcessID 屬性。使用前面的三個清單之一作為模板,試著在進行到第 7 步之前運行腳本。

注 要在本地計算機上運行腳本,將 strComputer 變量的值設置為“.”(引號內的一個單點)。

在運行新創建的 GetProcesses.vbs 腳本之后,您可以用 WIMI 測試器驗證腳本的結果。在 Win32_Process 對話框的對象編輯器中,單擊 Instances。產生的查詢結果對話框列出在計算機上運行的進程的實例。雙擊一個指定的進程實例,查看該實例的詳細信息。

 

就到這里吧

誠然,我們只是觸及了 WMI 腳本撰寫的表層。十分坦誠地說,這是有意的。WMI 提供了如此之多的腳本編寫的可能性,因此很容易造成“只見樹木,不見森林”的結果。不過不要擔心,隨著本系列內容的展開,我們將填補所有的缺口。此時要提煉出的重要內容是:WMI 是 Windows 中單獨的、最重要的管理支持技術,您無需成為開發人員或者腳本編寫權威就可以開始編寫基于 WMI 的腳本。繼續修改您新創建的腳本以檢索另外的進程屬性,或再進一步 — 檢索其他托管資源。在我們下個月見面之前,您可能發現自己有了一個滿是自定義的系統管理腳本的工具箱。讓我們知道您做得到底怎么樣。

清單 4 : WMI 測試器演練的答案

strComputer = "."   ' Dot (.) equals local computer in WMISet wbemServices = Getobject("winmgmts://" & strComputer)Set wbemObjectSet = wbemServices.InstancesOf("Win32_Process")For Each wbemObject In wbemObjectSet    WScript.Echo "Name:          " & wbemObject.Name      & vbCrLf & _                 "   Handle:     " & wbemObject.Handle    & vbCrLf & _                 "   Process ID: " & wbemObject.ProcessIDNext
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av成人在线免费观看 | 中国老女人一级毛片视频 | 爱看久久| 免费人成年短视频在线观看网站 | 草b视频在线观看 | 国产91porn | 黄色片网站在线播放 | 一级α片免费看刺激高潮视频 | 国产自在自线午夜精品视频在 | 九一免费版在线观看 | 日韩精品一区二区三区中文 | 久久九九热re6这里有精品 | 久久新网址| 午夜视频国产 | 亚洲第一成人久久网站 | 国产剧情在线观看一区二区 | 一级尻逼视频 | 一区二区三区在线观看免费 | 色视频在线 | 久久久久久久亚洲视频 | 高潮激情aaaaa免费看 | lutube成人福利在线观看 | 国产精品1区,2区,3区 | 91网站永久免费看 | 亚洲性爰 | 在线播放视频一区二区 | 91精品国产91久久久久久吃药 | 在线播放免费播放av片 | 色综合久久久久久久久久久 | 日韩精品dvd| 亚洲午夜精品视频 | 韩国精品视频在线观看 | 欧美黄色视屏 | 久久精品4| www国产成人免费观看视频,深夜成人网 | 在线播放黄色网址 | 双性精h调教灌尿打屁股的文案 | 国产一级淫 | 色婷婷a| 大西瓜永久免费av在线 | 一级毛片在线免费观看 |