Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1004to1008
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

eventvwr Systemstartzeit und - Endzeit auslesen

eventvwr Systemstartzeit und - Endzeit auslesen
26.08.2008 13:15:11
Stefan
Hallo Zusammen,
jetzt hab ich mal eine ganz knifflige Sache, welche sich nicht direkt auf Excel bezieht aber in Excel gelöst werden soll.
Ich möchte eine Datei erstellen, welche mit einem Skript direkt aus dem Windows Event-Logger-Daten das jeweils erste und letzte Ereignis eines Tages ausliest und dies Anfangs- und Endzeit in die Datei schreibt.
Ich weiss jedoch zu allererst einmal nicht wie iach auf diese Daten direkt zugreifen kann.
Mal sehen wer sich bei diesem Thema auskennt.
Gruß Stefan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: eventvwr Systemstartzeit und - Endzeit auslesen
29.08.2008 17:14:00
Tino
Hallo,
beim Googln habe ich ein VBS Script gefunden und dieses auf Excel etwas angepasst.
Einige Parameter habe ich inaktiv gemacht und das Erstelldatum angepasst.
Beim Datum kann es sein, dass es nicht funktioniert, da ich nicht weis ob der Zeitstempel auf jedem System gleich aussieht.
Ich beziehe mich auf die Frage
"Ich weiss jedoch zu allererst einmal nicht wie iach auf diese Daten direkt zugreifen kann"
Die erste Zeile habe ich für die Überschrift frei gelassen.
Modul Modul2
Sub Versuch() 
Dim objWMIService As Object 
Dim colLoggedEvents As Object 
Dim lngRow As Long, strDatum As String 
Dim strMessage As String 
Set objWMIService = GetObject("winmgmts:" _
    & "\\" & "." & "\root\cimv2") 
  
Set colLoggedEvents = objWMIService.ExecQuery _
    ("Select * from Win32_NTLogEvent Where Logfile = 'Application'") 
 
Application.ScreenUpdating = False 
 Range("A2", Cells(Rows.Count, "C")).ClearContents 
 lngRow = 1 
 
For Each objEvent In colLoggedEvents 
lngRow = lngRow + 1 
     
    'Infotext 
    If IsNull(objEvent.Message) = False Then 
        strMessage = objEvent.Message 
        Do While Right$(strMessage, 1) = Chr(10) Or Right$(strMessage, 1) = Chr(13) 
         strMessage = Trim$(Left$(strMessage, Len(strMessage) - 1)) 
        Loop 
        Cells(lngRow, "A") = strMessage 
    End If 
 
    
    ''Datum 
    strDatum = Trim$(objEvent.TimeWritten) 
    If strDatum > "" Then Cells(lngRow, "B") = _
    CDate(Mid(strDatum, 7, 2) & "." & Mid(strDatum, 5, 2) & "." & Mid(strDatum, 1, 4) & " " & _
    Mid(strDatum, 9, 2) & ":" & Mid(strDatum, 11, 2) & ":" & Mid(strDatum, 13, 2)) 
     
    'User 
    Cells(lngRow, "C") = IIf(IsNull(objEvent.User), "", Trim(objEvent.User)) 
 
''andere Parameter**************************** 
'    Debug.Print "Category: " & objEvent.Category 
'    Debug.Print "Computer Name: " & objEvent.ComputerName 
'    Debug.Print "Event Code: " & objEvent.EventCode 
'    Debug.Print "Record Number: " & objEvent.RecordNumber 
'    Debug.Print "Source Name: " & objEvent.SourceName 
'    Debug.Print "Event Type: " & objEvent.Type 
'********************************************** 
     
Next 
Application.ScreenUpdating = True 
End Sub 
 


Überschrift habe ich von Hand eingetragen und so sollte das Ergebnis aussehen.

 ABC
1MessageTimeUser
2Der Benutzerprofildienst wurde erfolgreich gestartet.18.05.2008 07:53NT-AUTORITÄT\SYSTEM
3Der Softwarelizenzierungsdienst wird gestartet.18.05.2008 07:53 

Achtung, es können schnell einige tausend Einträge vorhanden sein, bei mir sind es über 11000.
Gruß Tino

www.VBA-Excel.de


Anzeige
2. Version
29.08.2008 22:39:00
Tino
Hallo,
hier noch eine Möglichkeit, gleiches wie oben beschrieben, aber Logfile System.

Option Explicit
'EventType
'1 Error
'2 Warning()
'3 Information()
'4 Security audit success
'5 Security audit failure
Sub Versuch()
Dim objWMIService As Object
Dim colLoggedEvents As Object
Dim objEvent As Object
Dim lngRow As Long, strDatum As String
Dim strMessage As String
Set objWMIService = GetObject("winmgmts:" _
& "\\" & "." & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System'" & _
" and EventType = '3'")
Application.ScreenUpdating = False
Range("A2", Cells(Rows.Count, "C")).ClearContents
lngRow = 1
For Each objEvent In colLoggedEvents
lngRow = lngRow + 1
'Infotext
If IsNull(objEvent.Message) = False Then
strMessage = objEvent.Message
Do While Right$(strMessage, 1) = Chr(10) Or Right$(strMessage, 1) = Chr(13)
strMessage = Trim$(Left$(strMessage, Len(strMessage) - 1))
Loop
Cells(lngRow, "A") = strMessage
End If
''Datum
strDatum = Trim$(objEvent.TimeWritten)
If strDatum > "" Then Cells(lngRow, "B") = _
CDate(Mid(strDatum, 7, 2) & "." & Mid(strDatum, 5, 2) & "." & Mid(strDatum, 1, 4) & " " & _
Mid(strDatum, 9, 2) & ":" & Mid(strDatum, 11, 2) & ":" & Mid(strDatum, 13, 2))
'User
Cells(lngRow, "C") = IIf(IsNull(objEvent.User), "", Trim(objEvent.User))
''andere Parameter****************************
'    Debug.Print "Category: " & objEvent.Category
'    Debug.Print "Computer Name: " & objEvent.ComputerName
'    Debug.Print "Event Code: " & objEvent.EventCode
'    Debug.Print "Record Number: " & objEvent.RecordNumber
'    Debug.Print "Source Name: " & objEvent.SourceName
'    Debug.Print "Event Type: " & objEvent.Type
Next
Application.ScreenUpdating = True
End Sub


Gruß Tino

Anzeige
Logfile nach Datum
30.08.2008 11:06:36
Tino
Hallo,
ich hoffe das ich dies nicht umsonst gemacht habe,
weil auf eine Rückmeldung ich immer noch von dir warte.
Hiermit müsste auch deine erste Frage beantwortet sein.
Hiermit kannst du die Logfiles zu einem bestimmten Datum auslesen.
Modul Modul2
''Logfile =**** 
'Application 
'System 
'Security 
 
''EventType =** 
'1 Error 
'2 Warning() 
'3 Information() 
'4 Security audit success 
'5 Security audit failure 
Sub Versuch() 
Dim objWMIService As Object, colLoggedEvents As Object 
Dim dtmStartDate As Object, dtmEndDate As Object 
Dim strMessage As String, strDatum As String 
Dim lngRow As Long 
Dim SDatum As Date 
 
SDatum = Date 'welches Datum auslesen (heute)? 
 
Set objWMIService = GetObject("winmgmts:" _
    & "\\" & "." & "\root\cimv2") 
  
Const CONVERT_TO_LOCAL_TIME = True 
Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime") 
Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime") 
 
dtmStartDate.SetVarDate SDatum, CONVERT_TO_LOCAL_TIME 
dtmEndDate.SetVarDate SDatum + 1, CONVERT_TO_LOCAL_TIME 
 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2") 
 
Set colLoggedEvents = objWMIService.ExecQuery _
    ("Select * from Win32_NTLogEvent Where TimeWritten >= '" _
    & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "' and  Logfile = 'System' and EventType = '3'") 
 
 
Application.ScreenUpdating = False 
 Range("A2", Cells(Rows.Count, "C")).ClearContents 
 lngRow = 1 
 
For Each objEvent In colLoggedEvents 
    lngRow = lngRow + 1 
     
    'Infotext 
    If IsNull(objEvent.Message) = False Then 
        strMessage = objEvent.Message 
        Do While Right$(strMessage, 1) = Chr(10) Or Right$(strMessage, 1) = Chr(13) 
         strMessage = Trim$(Left$(strMessage, Len(strMessage) - 1)) 
        Loop 
        Cells(lngRow, "A") = strMessage 
    End If 
 
    
    ''Datum 
    strDatum = Trim$(objEvent.TimeWritten) 
    If strDatum > "" Then Cells(lngRow, "B") = _
    CDate(Mid(strDatum, 7, 2) & "." & Mid(strDatum, 5, 2) & "." & Mid(strDatum, 1, 4) & " " & _
    Mid(strDatum, 9, 2) & ":" & Mid(strDatum, 11, 2) & ":" & Mid(strDatum, 13, 2)) 
     
    'User 
    Cells(lngRow, "C") = IIf(IsNull(objEvent.User), "", Trim(objEvent.User)) 
 
''andere Parameter**************************** 
'    Debug.Print "Category: " & objEvent.Category 
'    Debug.Print "Computer Name: " & objEvent.ComputerName 
'    Debug.Print "Event Code: " & objEvent.EventCode 
'    Debug.Print "Record Number: " & objEvent.RecordNumber 
'    Debug.Print "Source Name: " & objEvent.SourceName 
'    Debug.Print "Event Type: " & objEvent.Type 
'********************************************** 
     
Next 
Application.ScreenUpdating = True 
End Sub 
 


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Logfile nach Datum
02.09.2008 08:46:29
Stefan
Hallo Tino,
vielen Dank für Deine Hilfe. Ich habe Heute erst wieder den Rechner angeschaltet und eigentlich
gar nicht mehr damit gerechnet, dass mir jemand antwortet.
Leider funktionieren Deine Makros bei mir noch nicht. Ich vermute, dass der Virenscanner damit ein Problem hat, da ich aber in der Arbeit bin und diesen nicht deaktivieren darf, muss ich es Zuhause nochmals ausprobieren.
Ich melde mich dann wieder.
Ciao Stefan
AW: Logfile nach Datum
02.09.2008 16:42:42
Tino
Hallo,
ich dachte schon die Arbeit war für die Katz weil keine Antwort gekommen ist.;-)
Konnte dies heute an mehreren PC‘s testen.
Win Vista mit Kaspersky- geht
Win XP mit Kaspersky- geht
Win XP mit Adminrechte- geht
Win XP ohne Adminrechte- geht
Mehr kann ich dazu nicht sagen, sorry
Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Logfile nach Datum
02.09.2008 17:59:00
Stefan
...Danke erst einmal bis Morgen weiss ich es dann auch ob es bei mir tut oder nicht.
Gruß Stefan

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige