使用 Windows 事件查看器日誌跟踪打印機使用情況

Jacki

在 Windows 中,您可以使用事件查看器跟踪打印機的使用情況。發送到打印後台處理程序的所有打印作業都記錄在事件查看器中。如果您在 Windows 上部署了打印服務器,則可以使用這些日誌來組織一個簡單的打印審核解決方案,使您能夠了解誰在您的打印機上打印、何時打印以及打印了多少頁。

在本文中,我們將展示如何在 Windows 中啟用和配置打印事件日誌記錄、在事件查看器中查看打印歷史記錄以及使用 PowerShell 搜索或篩選打印事件。

內容:

Windows 有一個單獨的事件查看器日誌,其中記錄了所有打印事件:SystemRoot%System32WinevtLogsMicrosoft-Windows-PrintService%4Operational.evt。但是,默認情況下此日誌是禁用的。要在 Windows 上啟用打印日誌記錄:

  1. 打開事件查看器(eventvwr.msc);
  2. 轉至應用程序和服務日誌 -> Microsoft -> Windows -> PrintService。
  3. 右鍵單擊操作並選擇啟用日誌;
  4. 如果要長時間保留打印日誌,請增加此事件日誌的默認大小 1MB。打開操作日誌屬性並設置最大日誌大小;

您還可以使用以下命令啟用(禁用)特定事件日誌:

wevtutil.exe sl Microsoft-Windows-PrintService/Operational /enabled:true

如果您希望事件日誌顯示發送用於打印的文件名,則必須啟用特殊的 GPO 設置。

  1. 打開本地組策略編輯器(gpedit.msc);
  2. 轉至計算機配置 -> 管理模板 -> 打印機。
  3. 啟用該選項允許事件日誌中的作業名稱;
  4. 使用更新策略設置gpupdate /force命令。

現在所有打印事件都將記錄在事件查看器中。

使用事件查看器檢查 Windows 上的打印歷史記錄

您現在可以查看有關此計算機上發生的所有打印事件的詳細信息。

打開事件查看器並轉到應用程序和服務日誌 -> Microsoft -> Windows -> PrintService -> 操作。查找帶有事件 ID 的事件307:Printing a document

打開活動詳情:

Document 12, Microsoft Word - woshub.docx owned by maxadm on \DESKTOP-PC617 was printed on HP LaserJet M1530 MFP Series PCL 6 through port USB001. Size in bytes: 31780. Pages printed: 1. No user action is required.

事件描述包含:

  • 打印文件的名稱和打印該文件的應用程序:Microsoft Word — woshub.docx
  • 打印文件的用戶名:maxadm
  • 打印機名稱:HP LaserJet M1530 MFP Series PCL 6
  • 打印頁數:Pages printed: 1
  • 文件大小:size in bytes

使用 PowerShell 打印日誌分析

事件查看器不允許方便地統計打印歷史記錄或按日期/用戶/文檔進行搜索。您可以使用 PowerShell 處理和過濾打印事件。

有關的:如何從 PowerShell/CMD 將日誌寫入 Windows 事件查看器

要從 PrintService/操作日誌中獲取事件,請使用 Get-WinEvent PowerShell cmdlet。以下 PowerShell 腳本顯示過去 24 小時內當前計算機上打印的所有文檔的列表:

$all2dayprint=Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307; StartTime=(Get-Date).AddDays(-1)} | Select-object -Property TimeCreated, @{label="UserName";expression={$_.properties[2].value}}, @{label="Document";expression={$_.properties[1].value}}, @{label="PrinterName";expression={$_.properties[4].value}}, @{label="PrintSizeKb";expression={$_.properties[6].value/1024}}, @{label="Pages";expression={$_.properties[7].value}}
$all2dayprint|ft

如果您只想顯示特定用戶打印的文檔:

$PrintUsername="maxadm"
$all2dayprint| Where-Object -Property UserName -like $PrintUsername|ft

您可以使用 Export-CSV 將打印文檔列表導出到 CSV 文件中:

$all2dayprint | Export-Csv -Path "c:psPrint Audit.csv" –NoTypeInformation -Encoding UTF8

或者以圖形化的 Out-GridView 形式查看它:

$all2dayprint| Out-GridView -Title "All print jobs"

您可以安排此 PowerShell 腳本每天運行並將打印機使用信息寫入外部數據庫。

例如,您可以將 PowerShell 腳本中的數據寫入 MySQL、MariaDB 或 Microsoft SQL Server 數據庫。