# Printer Log Report 0.3 # # Get-WinEvent on Englische Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" # Get-WinEvent on Deutsche Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Betriebsbereit" $events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 2000 | Where-Object { $_.Id -eq 307 } $logList = @() foreach ($event in $events) { $message = $event.Message $user = "" $computer = "" $document = "" $printer = "" $pages = 0 if ($message -match "im Besitz von (.+?) wurde auf") { $fullUser = $matches[1].Trim() if ($fullUser -match "^(.+?) auf (.+)$") { $user = $matches[1].Trim() $computer = $matches[2].Trim() } else { $user = $fullUser } } if ($message -match "wurde auf (.+?) über Port") { $printer = $matches[1].Trim() } if ($message -match "Gedruckte Seiten:\s+(\d+)") { $pages = [int]$matches[1] } if ($message -match "^Dokument\s+(\d+)") { $document = "Dokument " + $matches[1] } $logList += [PSCustomObject]@{ Datum = $event.TimeCreated Tag = $event.TimeCreated.Date.ToString("yyyy-MM-dd") Woche = Get-Date $event.TimeCreated -UFormat "%Y-W%V" Benutzer = $user Computer = $computer Dokument = $document Drucker = $printer Seiten = $pages } } # 🔹 Export részletes lista $exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv" $logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8 # 🔸 Összesítés felhasználónként (teljes) $summary = $logList | Group-Object -Property Benutzer | ForEach-Object { $userGroup = $_.Group [PSCustomObject]@{ Benutzer = $_.Name Anzahl_Dokumente = $userGroup.Count Gesamt_Seiten = ($userGroup | Measure-Object -Property Seiten -Sum).Sum } } $summary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_summary.csv" -NoTypeInformation -Encoding UTF8 # 🔸 Napi összesítés felhasználónként $dailySummary = $logList | Group-Object -Property Tag, Benutzer | ForEach-Object { $day = $_.Group[0].Tag $user = $_.Group[0].Benutzer $pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum $docs = $_.Count [PSCustomObject]@{ Datum = $day Benutzer = $user Dokumente = $docs Seiten = $pages } } $dailySummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_daily.csv" -NoTypeInformation -Encoding UTF8 # 🔸 Heti összesítés felhasználónként (ISO hét formátum: pl. 2025-W30) $weeklySummary = $logList | Group-Object -Property Woche, Benutzer | ForEach-Object { $week = $_.Group[0].Woche $user = $_.Group[0].Benutzer $pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum $docs = $_.Count [PSCustomObject]@{ Woche = $week Benutzer = $user Dokumente = $docs Seiten = $pages } } $weeklySummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_weekly.csv" -NoTypeInformation -Encoding UTF8 Write-Host "Exportálás kész:" Write-Host "- Részletes lista: drucklog_export.csv" Write-Host "- Összesítés: drucklog_summary.csv" Write-Host "- Napi összesítés: drucklog_daily.csv" Write-Host "- Heti összesítés: drucklog_weekly.csv" # 🔸 Nyomtatónkénti összesítés $printerSummary = $logList | Group-Object -Property Drucker | ForEach-Object { $printer = $_.Name $pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum $docs = $_.Count [PSCustomObject]@{ Drucker = $printer Dokumente = $docs Seiten = $pages } } $printerSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_by_printer.csv" -NoTypeInformation -Encoding UTF8 # 🔸 Napi összesítés nyomtatónként $dailyPrinterSummary = $logList | Group-Object -Property Tag, Drucker | ForEach-Object { $day = $_.Group[0].Tag $printer = $_.Group[0].Drucker $pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum $docs = $_.Count [PSCustomObject]@{ Datum = $day Drucker = $printer Dokumente = $docs Seiten = $pages } } $dailyPrinterSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_daily_by_printer.csv" -NoTypeInformation -Encoding UTF8 # 🔸 Heti összesítés nyomtatónként $weeklyPrinterSummary = $logList | Group-Object -Property Woche, Drucker | ForEach-Object { $week = $_.Group[0].Woche $printer = $_.Group[0].Drucker $pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum $docs = $_.Count [PSCustomObject]@{ Woche = $week Drucker = $printer Dokumente = $docs Seiten = $pages } } $weeklyPrinterSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_weekly_by_printer.csv" -NoTypeInformation -Encoding UTF8