29 сентября 2012 г.

Аудит печати. Как узнать кто когда и сколько напечатал?

Как то меня спросили а можно ли средствами самой  Windows узнать кто сколько откуда и что напечатал. Немного подумав решил эту задачу с помощью простенького скрипта на PowerShell.
Грубо говоря он отбирает события в Event Log = 307 в котором есть все необходимые для меня данные.

Скрипт:

cls
$CurrentDate = Get-date 
$date = $CurrentDate.AddDays(-1) 
$yesterday = ($CurrentDate) - (new-timespan -day 1)
$a = "<style>"
$a = $a + "BODY{background-color:peachpuff;}"
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$a = $a + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}"
$a = $a + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:PaleGoldenrod}"
$a = $a + "</style>"
$EventLog = get-winevent -logname "Microsoft-Windows-PrintService/Operational" | Select UserID, TimeCreated, UserName, MachineName, Message, ID
$EventLog | ForEach-Object {
$_.UserName = $_.UserID.Translate([security.principal.ntaccount])

        }
 
 $EventLog | sort-object -property UserName,TimeCreated  | where {$_.ID -eq "307"} | where {$_.timecreated -ge $yesterday}  | ConvertTo-Html -head $a -body "<H2>PrintService</H2>" -As TABLE -Property TimeCreated, UserName, MachineName, Message |  Out-File -FilePath "C:\PRNLOG\$($yesterday.ToString("yyyyMMdd")).html"

Комментариев нет:

Отправить комментарий