В Windows можно отслеживать использование принтера с помощью средства просмотра событий. Все задания печати, отправленные в спулер печати, записываются в журнал Event Viewer. Если на Windows установлен сервер печати, вы можете использовать эти журналы для организации простого аудита печати, который позволит вам понять, кто, когда и сколько страниц напечатал на ваших принтерах.

В этой статье мы покажем, как включать и настраивать регистрацию событий печати в Windows, просматривать историю печати в средстве просмотра событий, а также искать или фильтровать события печати с помощью PowerShell.

Как включить ведение журнала печати в Windows

В Windows есть отдельный журнал Event Viewer, в котором регистрируются все события печати: SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-PrintService%4Operational.evt. Однако по умолчанию этот журнал отключен. Чтобы включить ведение журнала печати в Windows:

  1. Откройте средство просмотра событий (eventvwr.msc);
  2. Перейдите в раздел Журналы приложений и служб -> Microsoft -> Windows -> PrintService.
  3. Щелкните правой кнопкой мыши на Операционная и выберите Включить журнал; Включение регистрации печати в Event ViewerВключение регистрации печати в средстве просмотра событий
  4. Увеличьте размер журнала событий с 1 МБ по умолчанию, если вы хотите хранить журналы печати в течение длительного времени. Откройте Эксплуатация свойства журнала и установите максимальный размер журнала; Увеличение размера журнала событий печатиУвеличение размера журнала событий печати
Также можно включить (отключить) определенный журнал событий с помощью команды:wevtutil.exe sl Microsoft-Windows-PrintService/Operational /enabled:true

Вы должны включить специальный параметр GPO, если хотите, чтобы журнал событий показывал имя файла, отправленного на печать.

  1. Откройте редактор локальной групповой политики (gpedit.msc);
  2. Перейдите в раздел Конфигурация компьютера -> Административные шаблоны -> Принтеры.
  3. Включите опцию Разрешить имя задания в журналах событий; GPO: Разрешить имя задания в журналах событийGPO: Разрешить имя задания в журналах событий
  4. Обновление параметров политики с помощью gpupdate /force команду.

Теперь все события печати будут регистрироваться в Event Viewer.

Проверка истории печати в Windows с помощью средства просмотра событий

Теперь вы можете просмотреть подробную информацию обо всех событиях печати, произошедших на этом компьютере.

Откройте Event Viewer и перейдите в раздел Applications and Services Logs -> Microsoft -> Windows -> PrintService -> Operational. Найдите событие с идентификатором события 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

Аудит событий печати в средстве просмотра событий WindowsАудит событий печати в средстве просмотра событий Windows

Анализ журналов печати с помощью PowerShell

Средство просмотра событий не позволяет получить удобную статистику истории печати или выполнить поиск по дате/пользователю/документу. Вы можете обрабатывать и фильтровать события печати с помощью PowerShell.

Чтобы получить события из журнала PrintService/Operational, используйте команду Get-WinEvent PowerShell. Следующий сценарий 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

PowerShell: список истории печати в Windows PowerShell: список истории печати в Windows

Если вы хотите отобразить только те документы, которые печатал определенный пользователь:

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

Вы можете экспортировать список напечатанных документов в CSV-файл с помощью Export-CSV:

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

Или просмотреть его в графической форме Out-GridView:

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

Просмотр статистики печати Windows с помощью PowerShellПросмотр статистики печати Windows с помощью PowerShell

Вы можете запланировать ежедневный запуск этого сценария PowerShell и записать информацию об использовании принтера во внешнюю базу данных.

Например, данные из сценария PowerShell можно записать в базу данных MySQL, MariaDB или Microsoft SQL Server.