Sub GetComputerInfo()

Mit der folgenden Routine werden einige Informationen zum Computer System ausgelesen.

Als Parameter wird an die Subroutine der Rechnername übergeben.

'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

Den Verbindungsaufbau über den Moniker WinMgmts: haben wir in WMI Basics besprochen.

Ü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.