1. 程式人生 > >VBS學習日記(十) WMI 基礎

VBS學習日記(十) WMI 基礎

Vbs 指令碼程式設計簡明教程—WMI 基礎之一

WMI 即 Windows 管理規範,是使用者管理本地和遠端計算機的一種模型。通過它可以訪問、配置、管理和監視幾乎所有的 Windows 資源。WMI 的語法十分簡單,基本上常見的名稱空間、物件等用幾乎一模一樣。它對應的是 Windows 裡的 WMI 服務(winmgmt)。更多詳細資訊,參見百度百科

一、WMI 的名稱空間

那麼名稱空間是做什麼作用的呢?我簡單這樣說,在同一段程式碼中,如果有兩個變數或函式的名字完全相同,就會出現衝突。名稱空間就是為解決變數、函式的命名衝突而服務的。解決的辦法就是將你的變數定義在一個不同名字的名稱空間中。就好像財政局有個張三,公安局也有個張三,但我們清楚,就是因為他們分屬不同的單位。有些地方可能不太準確,但大致意思就是這樣了。

WMI 的名稱空間建立了一個層次結構,有點類似於我們的目錄檔案結構。

1、 root- 作為所有其他名字的佔位符;
2、 root\default-與登錄檔操作有關的類;
3、 root\security-與系統安全有關的類;
4、 root\cimv2-從 CIM 派生的類,代表我們最常用的工作環境。

二、WMI的物件路徑

WMI 的物件路徑用來在 CIM 庫中定位類和它的事例,物件路徑用兩個反斜槓\\ 開頭,第一個元素是目標計算機的名字,第二個元素是相應的 WMI 名稱空間,第三個元素是相應的類名,並用 : 將它與名稱空間分隔開來。例如:\\..\root\cimv2:win32_service其中那個 . 代表是本地系統。

三、WMI 的查詢語言——WQL 僅僅是 ANSI SQL 的一個子集,只能用於資料的提取。

資料、事件查詢的基本語法為:
Select pro1 , pro2 , pro3 from myclass(myclassevent )
例如:Select name , path from Win32_share 說明:列出所有共享的名稱和路徑
也可以使用萬用字元 * ,例如:Select * from Win32_share
關鍵字 Where 用於限定查詢的範圍。
例如:Select * from Win32_share where name=”Admin ”

四、WMI 指令碼中使用的三個步驟


步驟 1:連線到 WMI 服務
在任何 WMI 指令碼中,第一個步驟都是建立一個到目標計算機上的 Windows 管理服務的連線。方法是呼叫 VBScript 的 Getobject 函式並將 WMI 指令碼庫的名字物件的名稱(即“winmgmts:”,後跟目標計算機的名稱)傳遞到 Getobject ,並返回一個物件的引用,此時,您就可以呼叫其提供的方法如:InstancesOf,正如方法名所示,InstancesOf 返回由資源的類名標識的託管資源的所有例項。
步驟 2:檢索 WMI 託管資源的例項
一般採用 WQL 來實現。
步驟 3:顯示 WMI 託管資源的屬性
最後一個步驟是列舉 檢索得到集合的內容。一般採用
For each enum in myclass
……
Next 結構來實現。