WMI ist eine Branchenempfehlung zur Entwicklung einer standardisierten Technologie für den Zugriff auf Verwaltungsinformationen in Unternehmensumgebungen. Zu diesen Informationen gehören der Zustand des Systemspeichers, eine Liste der aktuell installierten Clientanwendungen und andere Daten zum Clientstatus.
WMI ist eine skalierbare Systemverwaltungsarchitektur, die eine einheitliche, standardbasierte und erweiterbare objektorientierte Schnittstelle verwendet. Es bietet eine Standardmethode für die Interaktion mit Systemadministratorinformationen und der zugrunde liegenden WMI-API, die hauptsächlich von Entwicklern von Systemverwaltungsanwendungen und Systemadministratoren verwendet wird, um auf Systemverwaltungsinformationen zuzugreifen und diese zu betreiben.
Mit WMI können Tools zum Organisieren und Verwalten von Systeminformationen generiert werden, sodass Systemadministratoren die Systemaktivitäten genauer überwachen können.
WMI bietet einen umfangreichen Satz an Systemverwaltungsdiensten, die in das Microsoft Windows-Betriebssystem integriert sind, und wird mittlerweile von einer großen Anzahl von Anwendungen, Diensten und Geräten verwendet, um umfassende Verwaltungsfunktionen für Informationstechnologiebetriebe und Produktsupportorganisationen bereitzustellen. Der Einsatz von WMI-basierten Verwaltungssystemen sorgt für eine zuverlässigere Computerumgebung und eine höhere Systemzuverlässigkeit und spart so Unternehmenskosten.
Die zahlreichen von WMI bereitgestellten Spezifikationen implementieren die folgenden Verwaltungsaufgaben für viele High-End-Anwendungen, wie z. B. Microsoft Exchange, Microsoft SQL Server und Microsoft Internet Information Services (IIS).
1. Überwachen Sie die Anwendungsleistung
2. Erkennen Sie Engpässe oder Ausfälle
3. Anwendungen verwalten und konfigurieren
4. Anwendungsdaten abfragen (mittels objektrelationaler Durchläufe und Abfragen)
5. Führen Sie nahtlose lokale oder Remote-Verwaltungsvorgänge durch
Im Folgenden veranschaulichen wir anhand eines Beispiels die leistungsstarken Funktionen von WMI. Nehmen Sie vb6 als Spalte:
Referenz „Microsoft WMI Scripting V1.1 Library“
Der Code lautet wie folgt:
Option ExplicitDim WithEvents Sink As SWbemSinkDim j As Integer'-Funktion: Verwenden Sie WMI-Komponenten, um Computerinformationen abzurufen. Jede kleine Funktion wird separat geschrieben, damit jeder sie überprüfen kann. Private Sub cmdDone_Click()Dim oWMINameSpace As SWbemServicesDim oLogicalDisk As SWbemObject Dim ObjSet As VariantDim sDrive As StringDim sValue As StringDim dblSize As DoubleDim Obj As Variant Dim lIndex As Long Set oWMINameSpace = GetObject("winmgmts:") 'Laufwerksinformationen abrufenOn Error Resume NextSet ObjSet = oWMINameSpace.InstancesOf("Win32_DiskDrive") Für jedes Obj in ObjSet List5 .Untertitel & " - " & BytesToMegabytes(Obj.Size) & " GB"Next 'Detaillierte Informationen zu jedem DriveOn-Fehler abrufen GoTo ErrorHandler'Set oWMINameSpace = GetObject("winmgmts:")Set oLogicalDiskSet = oWMINameSpace.InstancesOf("Win32_LogicalDisk")Für jeden oLogicalDisk in oLogicalDiskSet bei Fehler Nächstes sDrive = fortsetzen oLogicalDisk.deviceid ListView1.ListItems.Add , , sDrive lIndex = ListView1.ListItems.Count sValue = oLogicalDisk.Description & "" ListView1.ListItems(lIndex).SubItems(1) = sValue sValue = oLogicalDisk.FileSystem & "" ListView1.ListItems(lIndex).SubItems(2) = sValue sValue = oLogicalDisk.VolumeName & "" ListView1.ListItems(lIndex).SubItems(3) = sValue sValue = oLogicalDisk.VolumeSerialNumber & "" ListView1.ListItems(lIndex).SubItems (4) = sValue sValue = oLogicalDisk.Size & "" If IsNumeric(sValue) ThendblSize = BytesToMegabytes(CDbl(sValue))sValue = CStr(dblSize) & " MB" End If ListView1.ListItems(lIndex).SubItems(5) = sValueNext CleanUp: Legen Sie oLogicalDisk = NothingSet fest 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 dblAns = (Bytes / 1024) / 1024 BytesToMegabytes = Format(dblAns, "###,###,##0.00")End Function Private Sub Command2_Click()Dim oWMINameSpace As SWbemServicesDim SystemSet As VariantDim System As VariantDim ObjSet As VariantDim Obj As Variant Set oWMINameSpace = GetObject("winmgmts:" )'Operating System Set SystemSet = oWMINameSpace.InstancesOf("Win32_OperatingSystem") Für jedes System in SystemSet List1.AddItem System.Caption List1.AddItem System.Manufacturer List1.AddItem System.BuildType & "" 'Es scheint, dass List1.AddItem System.Version List1.AddItem nicht verwendet werden kann raus unter Win9x System.SerialNumberNext'cpuSet ObjSet= oWMINameSpace.InstancesOf("Win32_Processor") Für jedes Obj in ObjSet List2.AddItem Obj.Caption List2.AddItem Obj.currentclockspeed & " Mhz"Next End Sub Private Sub Command3_Click()Dim oWMINameSpace As SWbemServicesDim ObjSet As VariantDim Obj As VariantDim Adapter As Variant 'Speicher eingestellt oWMINameSpace = GetObject("winmgmts:")Set ObjSet = oWMINameSpace.InstancesOf("Win32_PhysicalMemory")Dim i als String für jedes Obj in ObjSet List3.AddItem BytesToMegabytes(Obj.capacity) & " MB" & " Chip"Nächste 'Netzwerkkarte Set Sink = Neuer 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.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet) Dim Adapter As Variant'Alle Adapterinformationen abrufen Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & j & "") List4.AddItem Adapter.Description If IsNull(Adapter.MACAddress) Then List4.AddItem "No MAC Address" List4.AddItem " " Sonst List4.AddItem "Mac: " & Adapter.MACAddress List4.AddItem ""End If j = j + 1End Sub
Dieser Artikel wird hier vorgestellt. Weitere Informationen finden Sie in diesem Artikel: http://technet.microsoft.com/en-us/library/ee198932.aspx