Sub GetComputerInfo()

Die Sub GetComputerInfo() ist ein Beispiel, wie mit einem vbSkript WMI Daten gelesen werden können.

Den Verbindungsaufbau über WinMgmts: haben wir in WMI Grundlagen besprochen.

 

'Die Variable oOutFile wurde in CreateFileObjects() erzeugt.

Private Sub GetComputerInfo(ByVal strServer)
    On Error Resume Next
    Dim strRole, objItem
    
    Set wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strServer & "\root\cimv2")
    For Each objItem in wmi.ExecQuery("Select * From Win32_ComputerSystem",,48)
        Select Case objItem.DomainRole
            Case 0 strRole = "Standalone Workstation"
            Case 1 strRole = "Workstation in " & objItem.Domain
            Case 2 strRole = "Standalone Server"
            Case 3 strRole = "Server in " & objItem.Domain
            Case 4 strRole = "Domaincontroller in " & objItem.Domain
            Case 5 strRole = "Domaincontroller (PDC) in " & objItem.Domain
            Case Else strRole = "unknown"
        End Select
        oOutFile.WriteLine "Computer Role = " & strRole
        If Not IsNull(objItem.Manufacturer) Then
            oOutFile.WriteLine "Manufacturer = " & objItem.Manufacturer
        Else
            oOutFile.WriteLine "Manufacturer = unknown"
        End If
        If Not IsNull(objItem.Model) Then
            oOutFile.WriteLine "Model = " & objItem.Model
        Else
            oOutFile.WriteLine "Model = kann nicht ermittelt werden"
        End If
        oOutFile.WriteLine "Memory = " & objItem.TotalPhysicalMemory/1024/1024 & " MB"
    Next

    For Each objItem in wmi.ExecQuery("Select IdentifyingNumber from Win32_ComputerSystemProduct",,48)
            oOutFile.WriteLine "Serial Number = " & objItem.IdentifyingNumber
    Next
End Sub
Über die Methode wmi.ExecQuery holen wir alle verfügbaren Properties der WMI Klasse Select * from Win32_ComputerSystem. Über die Konstante "48" wird gesteuert, wie WMI die Daten zurückgeliefern soll - weitere Informationen dazu finden sich hier.
In der Schleife For Each objItem ... Next werden alle Properties der WMI Klasse Win32_ComputerSystem aufgelistet und die Werte können über objItem.Propertyname ermittelt werden.
In der zweiten Schleife 'For Each objItem ... Next' wird nur die Eigenschaft IdentifyingNumber der WMI Klasse Win32_ComputerSystemProduct ausgelesen.
Hinweis:
Der Wert dieser Property wird meist von Hardware Herstellern benötigt, wenn ein Call für einen Server aufgemacht werden muss.