Dieses Skript legt eine Excel Datei mit allen Diensten und deren Stati an. Die Vorausetzung ist, Excel muss installiert sein.
VBS Datei
Es handelt sich um eine VBS Datei. Ihr müsst nur den Code kopieren und bei Euch abspeichern und ausführen.
msg = "Kurzbeschreibung:" & vbCr & "Dieses Skript legt eine Excel Datei mit allen Diensten und deren Stati an. Voraussetzung -> Excel.
" & vbCr & vbCr & "Jetzt das Skript ausführen?"
antwort = MsgBox(msg, vbYesNo + vbQuestion)
if antwort = vbNo then
MsgBox "Abbruch", vbExclamation
WScript.Quit
end if
' das Variablenfeld mit den Klartextnamen für Status
startcodes = Split(",läuft nicht,wird gestartet,wird gestoppt,läuft,wird fortgesetzt,wird angehalten,angehalten,Fehler", ",")
' ein Variablenfeld mit den Klartextnamen für Starttyp anlegen
starttypes = Split("Autostart Boot,Autostart Windowsstart,Autostart Controlmanager,manuell,gesperrt",",")
'SYS: Windows Script Host Runtime Library
Set net = CreateObject("WScript.Network")
' Hier den lokalen Rechnernamen:
computer = InputBox("Bitte geben Sie den Rechnernamen an!",,net.ComputerName)
' Verbindung herstellen:
Set obj = GetObject("WinNT://" & computer & ",computer")
'SYS: Microsoft Office 2000 component
Set objXL = CreateObject("Excel.Application")
objXL.Visible = True
objXL.Workbooks.Add
objXL.Columns(1).ColumnWidth = 30
objXL.Columns(2).ColumnWidth = 15
objXL.Columns(3).ColumnWidth = 35
objXL.Columns(4).ColumnWidth = 20
objXL.Columns(5).ColumnWidth = 15
objXL.Columns(6).ColumnWidth = 10
objXL.Columns(7).ColumnWidth = 20
objXL.Columns(8).ColumnWidth = 20
' Spaltenüberschriften:
objXL.Cells(1, 1).Value = "Dienstname"
objXL.Cells(1, 2).Value = "Systemname"
objXL.Cells(1, 3).Value = "Executable"
objXL.Cells(1, 4).Value = "abhängig von"
objXL.Cells(1, 5).Value = "Konto"
objXL.Cells(1, 6).Value = "Status"
objXL.Cells(1, 7).Value = "Starttyp"
objXL.Cells(1, 8).Value = "Diensttyp"
Im Anschluss wird die 1. Zeile formatiert.
' erste Zeile formatieren:
objXL.Range("A1:H1").Select
objXL.Selection.Font.Bold = True
objXL.Selection.Interior.ColorIndex = 1
objXL.Selection.Interior.Pattern = 1 'xlSolid
objXL.Selection.Font.ColorIndex = 2
' Daten beginnen in zweiter Zeile
intIndex = 2
Servicefilter
' nur Service-Objekte anzeigen
obj.Filter = Array("Service")
' alle Dienste untersuchen
For each dienst in obj
' Infos in Spreadsheet eintragen:
GetInfo(dienst)
Next
MsgBox "Fertig.",vbInformation + vbSystemModal
Fehlerbehandlung ausschalten, denn einige Eigenschaften können
undefiniert sein (z.B. Dependencies).
Sub GetInfo(obj)
On Error Resume Next
objXL.Cells(intIndex, 1).Value = obj.DisplayName
objXL.Cells(intIndex, 2).Value = obj.Name
objXL.Cells(intIndex, 3).Value = obj.Path
dependencies = "unabhängig"
dependencies = obj.Dependencies
' ist es etwa ein VariablenFELD?
If TypeName(dependencies) = "Variant()" Then
' ja, also Feld in mehrzeiligen Text umwandeln
dependencies = Join(dependencies, vbLf)
End If
objXL.Cells(intIndex, 4).Value = dependencies
objXL.Cells(intIndex, 5).Value = obj.ServiceAccountName
' Zahlenwert in Klartext umwandeln:
objXL.Cells(intIndex, 6).Value = startcodes(obj.Status)
' Zahlenwert in Klartext umwandeln:
objXL.Cells(intIndex, 7).Value = starttypes(obj.StartType)
' Bitmaske in Klartext umwandeln:
objXL.Cells(intIndex, 8).Value = DecodeType(obj.ServiceType)
' nächste Zeile:
intIndex = intIndex + 1
On Error Goto 0
End Sub
Hier erfolgt die Typdekodierung.
Function DecodeType(code)
If (code And 1)<>0 Then
DecodeType = "Kernel-Treiber"
End If
If (code And 2)<>0 Then
DecodeType = DecodeType & "Dateisystem-Treiber"
End If
If (code And 16)<>0 Then
DecodeType = DecodeType & "eigener Prozeß"
End If
If (code And 32)<>0 Then
DecodeType = DecodeType & "gemeinsamer Prozeß"
End If
End Function
Viel Erfolg mit dem Testen und ändert es einfach ab wenn etwas nicht passt.