WMI是一項行業推薦規範,旨在為存取企業環境中的管理資訊而開發一種標準化技術。這些資訊包括系統記憶體的狀態、目前安裝的客戶應用程式清單,以及有關客戶端狀態的其他資料。
WMI是可伸縮的系統管理結構,該規範採用一個統一、基於標準且可擴展的物件導向介面。它提供與系統管理員資訊和基礎WMI API互動的標準方法,主要由系統管理應用程式開發人員和系統管理員用來存取和作業系統管理資訊。
WMI可用於產生組織和管理系統資訊的工具,使系統管理人員能夠更密切的監視系統活動。
WMI提供了一套內建在Microsoft Windows作業系統中的豐富的系統管理服務,現在有大量的應用程式、服務和裝置用其為資訊科技操作和產品支援組織提供全方位的管理功能。基於WMI的管理系統的使用帶來了更可靠的運算環境和更高的系統可靠性,從而節省了企業的開銷。
WMI提供的大量的規範為許多高端應用程序,例如Microsoft Exchange、Microsoft SQL Server和Microsoft Internet資訊服務(IIS)等實現如下管理任務。
1. 監視應用程式的運作情況
2. 檢測瓶頸或故障
3. 管理和配置應用程式
4. 查詢應用程式資料(使用物件關係的遍歷與查詢)
5. 執行無縫的本地或遠端管理操作
下面我們透過一個例子來說明WMI的強大功能。以vb6為列:
引用”Microsoft WMI Scripting V1.1 Library”
代碼如下:
Option ExplicitDim WithEvents Sink As SWbemSinkDim j As Integer'功能:利用wmi元件得到電腦的資訊,每一個小功能分開寫,便於大家查閱Private Sub cmdDone_Click()Dim oWMINameSpace As As StringDim sValue As StringDim dblSize As DoubleDim Obj As Variant Dim lIndex As Long Set oWMINameSpace = GetObject("winmgmts:") '得到驅動器的信息On Error Resume NextSet ObjSet = oWMINameSpace.InstancesOf("Win32_Disk InDrive" AddItem Obj.Caption & " - " & BytesToMegabytes(Obj.Size) & " GB"Next '得到每一個驅動器的詳細資料On Error GoTo ErrorHandler'Set oWMINameSpace = GetObject("winmgmts:")Set oLogicalDiskSet = oWMINameSpace.InstancesOf("Win32_LogD Winisk" oLogicalDiskSet On Error Resume Next sDrive = oLogicalDisk.deviceid ListView1.ListItems.Add , , sDrive lIndex = ListView1.ListItems.Count sValue = oLogicalDisk.Description & "" ListView1.ListItems(lIndex).SubItems(1) = sValue File. ListView1.ListItems(lIndex).SubItems(2) = sValue sValue = oLogicalDisk.VolumeName & "" ListView1.ListItems(lIndex).SubItems(3) = sValue sValue = oLogicalDisk.VolumeSerialSet. (4) = sValue sValue = oLogicalDisk.Size & "" If IsNumeric(sValue) ThendblSize = BytesToMegabytes(CDbl(sValue))sValue = CStr(dblSize) & " MB" End If ListView1.ListItems(lIndex).SubItems(5) = sValueNextUp Cleand Cleancx).SubItems(5) = sValueNextUp Cleant 檢視= NothingSet oLogicalDiskSet = NothingSet oWMINameSpace = NothingExit Sub ErrorHandler:MsgBox "" & Err.Description GoTo CleanUp End Sub Private Sub Command1_Click()Unload MeEnd Sub Private Function BytesToMegabytes(Bytes As Double) As Double Dim dblAns As Double dAnsegabytes(Bytes As Double) As Double Dim dblAns As Double dAnsegabytes(Bytes As Double) As Double Dim dblAns As Double dAnsegabytes(Bytes As Double) As Double Dim dblAns As Double dAnsegabytes(Bytes As Double) As Double Dim dblAns As Double dAnsegabytes(Bytes As Double) As Double Dim dblAns As Double dAnsegabytes(Bytes / 1020/ 10124by 102024by) Format(dblAns, "###,###,##0.00")End Function Private Sub Command2_Click()Dim oWMINameSpace As SWbemServicesDim SystemSet As VariantDim System As VariantDim ObjSet As VariantDim Objmt Variant Set Set oWName: )'作業系統Set SystemSet = oWMINameSpace.InstancesOf("Win32_OperatingSystem") For Each System In SystemSet List1.AddItem System.Caption List1.AddItem System.Manufacturer List1.AddItem System.BuildType & “” 'Win9x下好像取不出來List1.AddItem System.Version List11.AddItem. System.SerialNumberNext'cpuSet ObjSet = oWMINameSpace.InstancesOf("Win32_Processor") For Each Obj In ObjSet List2.AddItem Obj.Caption List2.AddItem Obj.currentclockspeed & " Mhz"Next End Sub Private Sub Command3_Click()Dim oWService AdSpace '記憶體Set oWMINameSpace = GetObject("winmgmts:")Set ObjSet = oWMINameSpace.InstancesOf("Win32_PhysicalMemory")Dim i As String For Each Obj In ObjSet List3.AddItem BytesToMegabytes(Obj.capacity) & " MB" & "NextSet" Sink = New SWbemSink Set Adapter = GetObject("winmgmts:")Adapter.InstancesOfAsync Sink, "Win32_NetworkAdapter" End Sub Private Sub Form_Load()j = 0End Sub Private Sub Sink_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemScript. WbemScripting.ISWbemNamedValueSet) Dim Adapter As Variant'得到所有的適配器資訊Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & j & "") List4.AddItem Adapter.Description If IsNull(Adapter.Null(Adapter.MAC. MAC Address" List4.AddItem ""Else List4.AddItem "Mac: " & Adapter.MACAddress List4.AddItem ""End If j = j + 1End Sub
這篇文章就介紹到這,更多的內容大家可以參考這篇文章:http://technet.microsoft.com/en-us/library/ee198932.aspx