跟踪使用Windows Event Viewer日志的打印机用法

Jacki

在Windows中,您可以使用事件查看器跟踪打印机的使用。在活动查看器中记录了发送给打印阀杆的所有打印作业。如果您在Windows上部署了打印服务器,则可以使用这些日志组织简单的打印审核解决方案,使您能够了解谁在打印机上打印了谁,何时以及多少页。

在本文中,我们将展示如何在Windows中启用和配置打印事件记录,在Event Viewer中查看打印历史记录,以及使用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的事件307Printing 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处理和过滤打印事件。

要从PrintService/Operational Log中获取事件,请使用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

您可以使用导出CSV将印刷文档的列表导出到CSV文件中:

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

或以图形外浏览形式查看:

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

您可以安排此PowerShell脚本每天运行,并将打印机使用信息写入外部数据库。

例如,您可以将PowerShell脚本的数据写入MySQL,MariadB或Microsoft SQL Server数据库。