應(yīng)用場景:在web服務(wù)器中,通過.NET編碼使用WMI查詢遠程服務(wù)器的一些硬件配置信息,使用性能計數(shù)器查詢遠程機器的運行時資源使用情況。在網(wǎng)上沒有找到相關(guān)的東西,特記錄與大家共享。
將web服務(wù)器和所有的遠程服務(wù)器添加的同一個域中,并創(chuàng)建一個域賬戶。
WMI是英文Windows Management Instrumentation的簡寫,通過使用WMI,我們可以獲取本地或遠程服務(wù)器的性能參數(shù)和進程運行情況,以及大部分硬件信息,但前提是運行的用戶要有足夠的權(quán)限,如administrator組用戶等。這也是做負載均衡所需要且比較方便快捷的途徑。
使用時首先添加System.Management.dll,然后引用
using System.Management;
在web站點的web.config中添加如下配置
將域賬戶添加到Performance Monitor Users,使域賬戶具有遠程訪問性能計數(shù)器的權(quán)限。
2. 打開WMI權(quán)限設(shè)置 安全 標(biāo)簽
3. 選中CIMV2,添加 域賬戶 ,并選中 啟用賬戶、遠程啟用、讀取 權(quán)限項,這樣域賬戶就可以遠程訪問WMI了。
WMI 入門
如果您閱讀有關(guān)腳本的書籍和文章,幾乎都會提到 WMI。不過,在實際使用 WMI 時,如果忘記其內(nèi)部構(gòu)造方式,則會感到非常迷茫,而且 WMI 的構(gòu)造方式對于它在 Windows PowerShell 中的工作方式極其重要。
WMI 主要是一個組織類的系統(tǒng),表示 Windows® 操作系統(tǒng)和其他基于 Windows 的硬件和軟件產(chǎn)品的管理信息。類實際上就是對一些給定軟件或硬件組件進程的屬性和功能的抽象描述。例如,邏輯磁盤類可能描述具有一個序列號、一個固定的存儲容量、一定的可用容量等內(nèi)容的設(shè)備。同時,描述 Windows 服務(wù)的類可能指定該服務(wù)有一個名稱、可以啟動和停止,以及指定其當(dāng)前狀態(tài)等。
在 WMI 中,類表示 WMI 可以管理的所有內(nèi)容。如果 WMI 沒有可用于某些內(nèi)容的類,則它無法管理該組件。Microsoft 在 msdn2.microsoft.com/aa394554.aspx 中記錄了核心 Windows WMI 類;其他產(chǎn)品(如 Internet 信息服務(wù)、SQL Server™)分別記錄了它們的 WMI 類。
由于存在特別多的類,因此 WMI 將它們組織到命名空間層次結(jié)構(gòu)中。例如,包含核心Windows OS 類的命名空間稱為 root/cimv2,而 Microsoft IIS 6.0 將其類存儲在 root/MicrosoftIISv2中。方便的是,root/cimv2 命名空間是 WMI 的默認命名空間(由 Windows PowerShell 共享的設(shè)置),這使得它可以更容易地與這些核心類一起使用。
“實例”是一種實際存在的類。例如,如果您的計算機有兩個邏輯磁盤,則會有Win32_LogicalDisk 類的兩個實例。如果在您的計算機上運行 50 個服務(wù),在 WMI 上將會看到Win32_Service 類的 50 個實例。使用 WMI 實際上就是請求 WMI 為您提供一個或多個實例,然后,要么檢查這些實例的屬性以發(fā)現(xiàn)您需要的管理信息,要么執(zhí)行這些實例的方法來進行管理更改(例如啟動或停止服務(wù))。
WMI 使用客戶端-服務(wù)器體系結(jié)構(gòu)。Windows 2000 以后的每個 Windows 版本都內(nèi)置了 WMI(后續(xù)版本擴展了可用類的數(shù)量),這意味著為您同時提供了 WMI 客戶端和 WMI 服務(wù)器軟件。在使用WMI 時,您實際上是向在您關(guān)注的計算機上運行的 WMI 服務(wù)發(fā)送請求。該 WMI 服務(wù)檢索您指定的 WMI 實例,并將其返回給您以供使用。這就是 Windows PowerShell 的作用,它簡化了請求實例、返回實例和使用實例的過程。