Zahl der Ausdrucke diverser Personen an diversen Netzwerkdruckern erfassen und anschließend auslesen

  • Hallo zusammen,

    ich möchte Folgendes Realisieren: Zahl/Menge der Ausdrucke von unterschiedlichen Personen an verschiedenen Netzwerkdruckern erfassen und in eine Excel-Tabelle eintragen.

    Mein Hauptproblem ist jetzt als erstes: Wie kann ich dies erfassen?
    Ich habe folgende Lösung angedacht: Unter Druckereigenschaften, Sicherheit, Erweitert, Überwachung Nutzer hinzuzufügen und es dadurch zu erfassen. Ich habe dies bereits auch getestet, habe aber folgenes Problem: Wo kann ich die Infos abrufen, die ich durch die Registerkarte "Überwachung" angebe zu sammeln?
    Außerdem frage ich mich, ob ich dadurch auch die Menge der Ausdrucke erfassen kann.

    Wie lässt sich das am besten lösen?

    Sobald ich weiß, wo/wie die Infos gespeichert werden, kann ich mir überlegen, wie ich die Auslesung und das Schreiben in eine Excel-Tabelle realisieren kann.

    Wäre schön, wenn jemand weiterhelfen könnte :)

    LG FKFK

    • Offizieller Beitrag

    Werden alle Druckjobs vom Server verwaltet? Dann kannst du doch (wie in deinem letzten Thread von mir geschrieben) dort die Abfrage kontinuierlich laufen lassen und die Werte abspeichern.

    Edit:
    Vielleicht kannst du diese WMI-Abfragen ja auch verwerten:

    Spoiler anzeigen
    [autoit]


    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;=======================================================================================================================
    ; Returns total number of jobs, total number of pages, and largest job for all print queues on a computer.
    ;=======================================================================================================================
    ; Generated by AutoIt Scriptomatic

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PrintJob", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    $Output = $Output & "DataType: " & $objItem.DataType & @CRLF
    $Output = $Output & "Description: " & $objItem.Description & @CRLF
    $Output = $Output & "Document: " & $objItem.Document & @CRLF
    $Output = $Output & "DriverName: " & $objItem.DriverName & @CRLF
    $Output = $Output & "ElapsedTime: " & WMIDateStringToDate($objItem.ElapsedTime) & @CRLF
    $Output = $Output & "HostPrintQueue: " & $objItem.HostPrintQueue & @CRLF
    $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    $Output = $Output & "JobId: " & $objItem.JobId & @CRLF
    $Output = $Output & "JobStatus: " & $objItem.JobStatus & @CRLF
    $Output = $Output & "Name: " & $objItem.Name & @CRLF
    $Output = $Output & "Notify: " & $objItem.Notify & @CRLF
    $Output = $Output & "Owner: " & $objItem.Owner & @CRLF
    $Output = $Output & "PagesPrinted: " & $objItem.PagesPrinted & @CRLF
    $Output = $Output & "Parameters: " & $objItem.Parameters & @CRLF
    $Output = $Output & "PrintProcessor: " & $objItem.PrintProcessor & @CRLF
    $Output = $Output & "Priority: " & $objItem.Priority & @CRLF
    $Output = $Output & "Size: " & $objItem.Size & @CRLF
    $Output = $Output & "StartTime: " & WMIDateStringToDate($objItem.StartTime) & @CRLF
    $Output = $Output & "Status: " & $objItem.Status & @CRLF
    $Output = $Output & "StatusMask: " & $objItem.StatusMask & @CRLF
    $Output = $Output & "TimeSubmitted: " & WMIDateStringToDate($objItem.TimeSubmitted) & @CRLF
    $Output = $Output & "TotalPages: " & $objItem.TotalPages & @CRLF
    $Output = $Output & "UntilTime: " & WMIDateStringToDate($objItem.UntilTime) & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_PrintJob" )
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;=======================================================================================================================
    ; Uses cooked performance counters to retrieve data such as total number of jobs printed and total number of printing errors for each print queue on a computer.
    ;=======================================================================================================================
    ; Generated by AutoIt Scriptomatic

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_Spooler_PrintQueue", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "AddNetworkPrinterCalls: " & $objItem.AddNetworkPrinterCalls & @CRLF
    $Output = $Output & "BytesPrintedPersec: " & $objItem.BytesPrintedPersec & @CRLF
    $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    $Output = $Output & "Description: " & $objItem.Description & @CRLF
    $Output = $Output & "EnumerateNetworkPrinterCalls: " & $objItem.EnumerateNetworkPrinterCalls & @CRLF
    $Output = $Output & "Frequency_Object: " & $objItem.Frequency_Object & @CRLF
    $Output = $Output & "Frequency_PerfTime: " & $objItem.Frequency_PerfTime & @CRLF
    $Output = $Output & "Frequency_Sys100NS: " & $objItem.Frequency_Sys100NS & @CRLF
    $Output = $Output & "JobErrors: " & $objItem.JobErrors & @CRLF
    $Output = $Output & "Jobs: " & $objItem.Jobs & @CRLF
    $Output = $Output & "JobsSpooling: " & $objItem.JobsSpooling & @CRLF
    $Output = $Output & "MaxJobsSpooling: " & $objItem.MaxJobsSpooling & @CRLF
    $Output = $Output & "MaxReferences: " & $objItem.MaxReferences & @CRLF
    $Output = $Output & "Name: " & $objItem.Name & @CRLF
    $Output = $Output & "NotReadyErrors: " & $objItem.NotReadyErrors & @CRLF
    $Output = $Output & "OutofPaperErrors: " & $objItem.OutofPaperErrors & @CRLF
    $Output = $Output & "References: " & $objItem.References & @CRLF
    $Output = $Output & "Timestamp_Object: " & $objItem.Timestamp_Object & @CRLF
    $Output = $Output & "Timestamp_PerfTime: " & $objItem.Timestamp_PerfTime & @CRLF
    $Output = $Output & "Timestamp_Sys100NS: " & $objItem.Timestamp_Sys100NS & @CRLF
    $Output = $Output & "TotalJobsPrinted: " & $objItem.TotalJobsPrinted & @CRLF
    $Output = $Output & "TotalPagesPrinted: " & $objItem.TotalPagesPrinted & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_PerfFormattedData_Spooler_PrintQueue" )
    Endif

    [/autoit]