Kategorien
Scripte

Service Status in Excel exportieren

Dieses Skript legt eine Excel Datei mit allen Diensten und deren Stati an. Die Vorausetzung ist, Excel muss installiert sein.

CSS Programming Image

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.

Von Michael

Diplom-Ingenieur
wohnhaft in München

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert