Il est donc possible, à partir de là, de compter le nombre de pages imprimées par utilisateurs du domaine, sur ce serveur d'impression.
Les impressions directes (qui ne passent pas par le serveur d'impression, comme les photocopies ou les imprimantes reliées directement à l'ordinateur) ne seront évidemment pas comptabilisées.
$start = date Write-Host -NoNewline "Lecture du journal" $data = Get-EventLog -ComputerName serveur-impression -LogName System -Source Print -InstanceId 1073741834 Write-Host " ($([int](date).Subtract($start).TotalSeconds)s)" Write-Host "Calcul du résultat" $data | ForEach-Object { $var = @{} $msg = $_.Message # on parse le contenu de message pour récupérer le login et le nombre de page $var.user = $msg.Substring($msg.IndexOf("possédé par")+12).Split(" ")[0].ToLower() $var.nb = $msg.Substring($msg.IndexOf("pages imprimées")+18) $res = New-Object PSObject -Property $var # on retourne un objet Write-Output $res } | group-object user | foreach { # on regroupe toutes les impressions par utilisateur $var2 = @{} $var2.user = $_.Name # on fait le cumul des pages de l'utilisateur $var2.total = ($_.Group | measure-object nb -sum).Sum $res2 = New-Object PSObject -Property $var2 Write-Output $res2 } | sort -Descending total echo "Terminé en $([int](date).Subtract($start).TotalSeconds) sec"
Le script retourner une liste de couple "user,total" triée à partir du plus gros total de feuilles. Pour pouvez passer le résultat du sort directement vers un export-csv.
Attention : le traitement peut durer une dizaine de minutes selon le nombre d'impressions à traiter.
Note : veuillez à avoir une taille limite pour le journal d’événement assez élevée pour stocker assez d'enregistrements. Pour changer la taille, rendez-vous dans le gestionnaire d’événements, faites un clic-droit > Propriétés sur le journal Système et augmentez la taille. Une taille de 50 Mo suffit à stocker l'historique d'environ 10 à 50 000 impressions.