GetServerHardware.vbs

Mit dem Skript GetServerHardware.vbs können Hardware Informationen von Servern abgefragt werden.

Die Server, die abgefragt werden sollen, müssen als Liste in einer Inputdatei mit dem Namen server.txt bereitstehen.
Abgefragt werden die Active Directory Description für das Serverobjekt, und die WMI Properties
Hardware-Hersteller, -Model, RAM, CPU, OS sowie die IP-Adresse für den jeweiligen Server.
Das Ergebnis der Abfragen wird zeilenweise und durch einen Delimeter getrennt ausgegeben,
um die Daten einfach in einer Excel Tabelle darstellen zu können.

Das Listing zeigt nur die relevanten Funktionen - es fehlen z.B. Routinen, wie das Erzeugen der File Handles oder IsAlive Prüfung.

'********************************
'* Main
'********************************
VerifyHostScript()
CreateFileObjects()
strDomainDN = GetDomainName()
PrintOut "Server" & sDelim & "Manufacturer" & sDelim & "Model" & sDelim & "RAMByte" & sDelim & "CPUs" & sDelim & "OS" & sDelim & "IP" & sDelim & "AD-Description"

Do While oInFile.AtEndOfStream <> True
    strServer = Trim(oInFile.ReadLine)
    If Not strServer = "" and InStr(strServer,"#") <> 1 Then
        Call GetCompInfo(strServer)
    End If
Loop
oInFile.Close
oOutFile.Close
oLogFile.Close
wscript.quit
'********************************
'* End Main
'********************************


'********************************
'* Sub GetCompInfo()
'* Purpose:    Retrieve Server Information
'* Input:    Servername
'* Output:    
'********************************
Private Sub GetCompInfo(ByVal strServer)
    On ERROR Resume Next
    Dim strHw, strOS, strDesc
    
    strDesc=""
    strHw=""
    
    strDesc = Replace(GetADdescription(strDomainDN, strServer),";",",") 'for sDelim = ";"
    If Not IsAlive(strServer) Then
        PrintOut strServer & sDelim & "" & sDelim & "" & sDelim & "" & sDelim & "" & sDelim & strIP & sDelim
        Exit Sub
    End If

    Err.Clear    'clear possible ERRORs
    Set wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strServer & "\root\cimv2")
    If Err.Number Then
         PrintLog Err.Number, strServer & ": ERROR WMI at GetObject(winmgmts:{impersonationLevel=impersonate}!\\" & strServer & "\root\cimv2)"
        strHw = sDelim & "" & sDelim & "" & sDelim & "" & sDelim & ""
    Else
        strHw = GetHW(strServer)
        strOS = GetOS(strServer)
    End If

    PrintOut strServer & sDelim & strHw & sDelim & strOS & sDelim & strIP & sDelim & strDesc
    Set wmi = nothing
End Sub


'****************************
'* Function GetHW()
'* Purpose: Get HW from WMI
'* Input:    strServer
'********************************
Private Function GetHW(ByVal strServer)
    On ERROR Resume Next
    Dim colItems, oItem, strOut
    
    Err.clear
    Set colItems = wmi.ExecQuery("Select Manufacturer,Model,TotalPhysicalMemory,NumberOfProcessors from Win32_ComputerSystem",,48)
    For Each oItem in colItems
        strOut = oItem.Manufacturer & sDelim & oItem.Model & sDelim & oItem.TotalPhysicalMemory & sDelim & oItem.NumberOfProcessors
        wscript.echo vbTAB & strOut
    Next
    Set colItems = Nothing
    GetHW = strOut
End Function


'********************************
'* Function GetOS()
'* Purpose: Get OS from WMI
'* Input:    strServer
'********************************
Private Function GetOS(ByVal strServer)
    On ERROR Resume Next
    Dim colItems, oItem, strOut
    
    Err.clear
    Set colItems = wmi.ExecQuery("Select Caption,CSDVersion from Win32_OperatingSystem",,48)
    For Each oItem in colItems
        strOut = oItem.Caption & " - " & oItem.CSDVersion
        wscript.echo vbTAB & strOut
    Next
    Set colItems = Nothing
    GetOS = strOut
End Function


Download GetServerHardware.vbs

Scripting Basics