GetServerSoftware.vbs

Mit dem Skript GetServerSoftware.vbs können Software 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 installierten Software Produkte.
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 & "Uninstall Key - installed Software" & sDelim & "AD-Description"

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


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

    Err.Clear    'clear possible ERRORs
    Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strServer & "\root\default:StdRegProv")
    If Err.Number Then
         PrintLog Err.Number, strServer & ": Script ERROR at Set oReg = GetObject()"
        strSW = strServer & sDelim & "Script ERROR at Set oReg = GetObject()"
    Else
        strSW = GetSW(strServer)
    End If

    PrintOut strSW & sDelim & strDesc
    Set oReg = nothing
End Sub


'********************************
'* Function GetSW()
'* Purpose: Get Software from Registry
'* Input:    strServer
'********************************
Private Function GetSW(ByVal strServer)
    On ERROR Resume Next

    Dim aSubkeys, strSubkey, strAppName, strOut, iLen

    oReg.EnumKey HKLM, strUninstallPath, aSubkeys
    For Each strSubkey In aSubkeys
        oReg.GetStringValue HKLM, strUninstallPath & "\" &    strSubkey, "DisplayName", strAppName
        strOut = strOut & strServer & sDelim & strSubkey & " - " & strAppName & vbCRLF
    Next
    iLen = Len(strOut)-2
    strOut = Mid(strOut, 1, iLen) 'letztes vbCRLF abschneiden
    GetSW = strOut
End Function


Download GetServerSoftware.vbs

Scripting Basics