$Date = (get-date) - (new-timespan -day 1) $PrintEntries = get-winevent -computername -logname Microsoft-Windows-PrintService/Operational | where {$_.timecreated -ge $Date} | where {$_.Id -eq 307} ForEach ($PrintEntry in $PrintEntries) { #Get date and time of printjob from TimeCreated $Date_Time = $PrintEntry.TimeCreated #get Message from printjob. $rawMessage = $PrintEntry.Message #parse $rawMessage to get owner $rxUserName = [regex]"owned by ([0-9a-zA-Z]{1,}) on" $rawUser = $rxUserName.Match($rawMessage) $Username = $rawUser.Groups[1].Value #parse $rawMessage to get document name $rxDocumentName = [regex]", ([a-zA-Z-_:/\[#\]\?\\\=\d\.\s\(\)&-,]{1,}) owned by" $rxMatches = $rxDocumentName.Match($rawMessage) $docName = $rxMatches.Groups[1].Value #parse $rawMessage to get printername $rxPrinterName = [regex]"was printed on ([0-9a-zA-Z\-]{1,}) through" $rxMatches = $rxPrinterName.Match($rawMessage) $PrinterName = $rxMatches.Groups[1].Value #parse $rawMessage to get print size $rxPrintSize = [regex]"Size in bytes: ([0-9]+)." $rxMatches = $rxPrintSize.Match($rawMessage) $PrintSize = $rxMatches.Groups[1].Value #parse $rawMessage to get number of pages $rxPageCount = [regex]"Pages printed\: ([0-9]+)." $rxMatches = $rxPageCount.Match($rawMessage) $PrintPages = $rxMatches.Groups[1].Value #Get full name from AD if ($UserName -gt "") { $DirectorySearcher = New-Object System.DirectoryServices.DirectorySearcher $LdapFilter = "(&(objectClass=user)(samAccountName=${UserName}))" $DirectorySearcher.Filter = $LdapFilter $UserEntry = [adsi]"$($DirectorySearcher.FindOne().Path)" $ADName = $UserEntry.displayName } $Date_Time #$rawMessage $UserName $ADName $PrinterName $PrintSize $PrintPages $docName }