В Windows можно отслеживать использование принтера с помощью средства просмотра событий. Все задания печати, отправленные в спулер печати, записываются в журнал Event Viewer. Если на Windows установлен сервер печати, вы можете использовать эти журналы для организации простого аудита печати, который позволит вам понять, кто, когда и сколько страниц напечатал на ваших принтерах.
В этой статье мы покажем, как включать и настраивать регистрацию событий печати в Windows, просматривать историю печати в средстве просмотра событий, а также искать или фильтровать события печати с помощью PowerShell.
Как включить ведение журнала печати в Windows
В Windows есть отдельный журнал Event Viewer, в котором регистрируются все события печати: SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-PrintService%4Operational.evt
. Однако по умолчанию этот журнал отключен. Чтобы включить ведение журнала печати в Windows:
- Откройте средство просмотра событий (
eventvwr.msc
); - Перейдите в раздел Журналы приложений и служб -> Microsoft -> Windows -> PrintService.
- Щелкните правой кнопкой мыши на Операционная и выберите Включить журнал;
- Увеличьте размер журнала событий с 1 МБ по умолчанию, если вы хотите хранить журналы печати в течение длительного времени. Откройте Эксплуатация свойства журнала и установите максимальный размер журнала;
wevtutil.exe sl Microsoft-Windows-PrintService/Operational /enabled:true
Вы должны включить специальный параметр GPO, если хотите, чтобы журнал событий показывал имя файла, отправленного на печать.
- Откройте редактор локальной групповой политики (
gpedit.msc
); - Перейдите в раздел Конфигурация компьютера -> Административные шаблоны -> Принтеры.
- Включите опцию Разрешить имя задания в журналах событий;
- Обновление параметров политики с помощью
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
Анализ журналов печати с помощью 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
Если вы хотите отобразить только те документы, которые печатал определенный пользователь:
$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"
Вы можете запланировать ежедневный запуск этого сценария PowerShell и записать информацию об использовании принтера во внешнюю базу данных.