Jump to content

Eventlog Abholung unter Windws Server 2008 per VB


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hi Leute,

 

ich habe in einer Excel Tabelle Makros, mit deren Hilfe das EventLog eines MS Server 2003 den wir als Print-Server laufen hatten abgefragt wurde, um somit das Druckvolumen auszuwerten (je Drucker, je Mitarbeiter, usw.).

Jetzt wurde der Server auf MS Server 2008 umgestellt und die Abfrage der EventLogs klappt nicht mehr, kann mir da vielleicht jemand helfen.

 

Der alte Aufruf sah so aus:

 

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

 

Set objWMIService = objSWbemLocator.ConnectServer(CompName, "\root\cimv2", UserName, UserPass)

 

Set printEvents = objWMIService.ExecQuery _

("SELECT * FROM Win32_NTLogEvent " _

& "WHERE Logfile = 'System' " _

& "AND SourceName = 'Print'" _

& "AND EventCode=10")

 

Wie müsste das jetzt aussehen?

Besten Dank.

Geschrieben

Moin,

 

die Ursache wird sein, dass ab 2008 die Print-Meldungen größtenteils in einem eigenen Protokoll landen. Wie man das anspricht, weiß ich aber nicht, weil ich mich mangels Bedarf noch nicht darum gekümmert habe.

 

Gruß, Nils

Geschrieben

Nur leider funktioniert eine Änderung auf:

 

Set printEvents = objWMIService.ExecQuery _

("SELECT * FROM Win32_NTEventLogFile " _

& "WHERE LogfileName = 'System' " _

& "AND SourceName = 'PrintSpooler'" _

& "AND EventCode=10")

 

... dann gar nicht mehr!

Geschrieben

Besten Dank samsam,

die Links hatten den entscheidenden Tip:

 

Set printEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent WHERE EventCode=10 And SourceName='Microsoft-Windows-PrintSpooler'")

 

Jetzt kann ich wieder schön in einer Excel Tabelle mit Grafiken sehen, wieviel auf einem Drucker je Monat gedruckt wurde, wieviel jeder Mitarbeiter gedruckt hat und auf welchem Drucker er geduckt hat. :D

Geschrieben

Das Ganze sieht jetzt so aus :):

 

Private Function ReadEvents(Optional CompName As String = ".", _

Optional SheetName As String = "Eventlogdaten", _

Optional UserName As String = "", _

Optional UserPass As String = "") As Integer

 

Dim printEvents As Object

Dim printEvent As Variant

Dim EventData As Collection

Dim EventStructure As String

Dim objSWbemLocator As Object

Dim objWMIService As Object

Dim myWS As Worksheet

Dim offset As Long

 

Set myWS = Worksheets(SheetName)

Worksheets(SheetName).Range("A:I").ClearContents

 

On Error GoTo ErrHand

 

Application.StatusBar = "Initializing WMI..."

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

Set objWMIService = objSWbemLocator.ConnectServer(CompName, "\root\cimv2", UserName, UserPass)

 

Application.StatusBar = "Querying destination Event Log..."

Set printEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent WHERE EventCode=10 And SourceName='Microsoft-Windows-PrintSpooler'")

 

On Error GoTo 0

 

myWS.Cells(1, 1) = "Zeitpunkt"

myWS.Cells(1, 2) = "Zeitquantum"

myWS.Cells(1, 3) = "Dokumentnummer"

myWS.Cells(1, 4) = "Dokumentname"

myWS.Cells(1, 5) = "Besitzer"

myWS.Cells(1, 6) = "Anschluss"

myWS.Cells(1, 7) = "Drucker"

myWS.Cells(1, 8) = "Größe"

myWS.Cells(1, 9) = "Seiten"

 

offset = 2

 

Application.StatusBar = "Processing events..."

For Each printEvent In printEvents

myWS.Cells(offset, 1) = DateValue(Format$( _

Left$(printEvent.TimeGenerated, 14), _

"&&&&-&&-&& &&:&&:&&")) + _

TimeValue(Format$( _

Left$(printEvent.TimeGenerated, 14), _

"&&&&-&&-&& &&:&&:&&"))

 

myWS.Cells(offset, 2).Formula = "=Date(Year(A" & offset & ")," _

& "Month(A" & offset & "),1)"

 

myWS.Cells(offset, 3) = CLng(printEvent.InsertionStrings(0))

myWS.Cells(offset, 4) = "'" & printEvent.InsertionStrings(1)

myWS.Cells(offset, 5) = "'" & printEvent.InsertionStrings(2)

myWS.Cells(offset, 6) = "'" & printEvent.InsertionStrings(4)

myWS.Cells(offset, 7) = "'" & printEvent.InsertionStrings(3)

myWS.Cells(offset, 8) = CLng(printEvent.InsertionStrings(5))

myWS.Cells(offset, 9) = CLng(printEvent.InsertionStrings(6))

 

offset = offset + 1

If (offset - 2) Mod 100 = 0 Then

Application.StatusBar = offset - 2 & " Events processed..."

End If

Next

 

Application.StatusBar = "Done processing " & offset - 2 & " events"

ReadEvents = 0

Exit Function

 

ErrHand:

MsgBox "Bei der Verarbeitung der WMI-Abfrage ist ein Fehler aufgetreten:" & vbCrLf & _

Err.Description, vbExclamation, "Fehler bei Verarbeitung"

ReadEvents = -1

End Function

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...