
Serveur d'impression – Activer le script d'audit et de collecte de journaux – ID d'événement: 307 – Bien choisir son serveur d impression
Un ami m'a demandé d'installer le serveur d'impression dans son environnement (Windows Server 2008 R2 SP1), d'activer l'audit des travaux d'impression et de créer un rapport toutes les semaines.
- Pour installer le serveur d'impression il y a une très belle vidéo: sur youtube
- Une fois les imprimantes installées et déployées, nous devrions activer l'audit de l'événement PrinterService. journaux. Sur le serveur d'impression Ouvrir Gestionnaire de serveur -> Diagnostics -> Journaux des événements -> Journaux d'applications et de services -> Microsoft -> les fenêtres -> Service d'impression
- Imprimer des pages de test
- Exécutez le script suivant et il passera par événement. journaux, collecter des événements. ID 307 pour les 168 dernières heures et rassemblez votre fichier CSV avec les informations les plus importantes sur les documents imprimés (quoi, où, quand et par qui a été imprimé)
$ dat = get-date $ name = "$ ($ dat.day) _ $ ($ dat.month) _ $ ($ dat.year)" start-transcript c: scripts printaudit_logs log_ $ nom.log #print audit script $ pserv = "PrintServerName" $ AuFileRaw = "c: scripts printaudit_logs Audit.csv" $ AuFileLRD = "c: scripts printaudit_logs last_run.csv" ################################### Mode test - annulation du commentaire $ dat | Fichier de sortie $ AuFileLRD ################################################# ################################################# ######################################### #read_event_log quotidiennement à partir du courant $ a = Get-WinEvent -ProviderName "Microsoft-Windows-PrintService" - Nomordinateur $ pserv | où (($ _. id -eq 307) etand ($ _. timecreated -ge $ dat.addhours (-168)))} | sélectionnez Message, TimeCreated #read event from file # $ a = Get-WinEvent -Path 'C: Scripts PrintAudit_logs system log.evtx' | où (($ _. id -eq 307))} | | sélectionnez Message, TimeCreated $ lr = "DocName; utilisateur; IP; Imprimante; Port IP; taille; pages; Date" $ lr | Out-File $ AuFileLRD -Append foreach ($ rec in $ a) Out-File $ AuFileRaw -Append $ out #sauvegarder dans un fichier brut # rapports générés #envoi de mail Stop-Transcript
Mise à jour: j'ai créé une nouvelle version du script rassemblant les rapports d'impression pour la période sélectionnée. C'est également plus rapide, car j'ai ajouté des conditions supplémentaires pour ne pas inclure de lignes vides dans les rapports. Voici la nouvelle version. Les lignes bleues sont sujettes à modification pour modifier la période, l'emplacement des journaux et le nom du serveur d'impression:
#Version 1.1 $ dat = get-date $ name = "$ ($ dat.day) _ $ ($ dat.month) _ $ ($ dat.year)" start-transcript c: scripts printaudit_logs log_ $ nom.log #print audit script $ pserv = "OPHQMS01" $ AuFileRaw = "c: scripts printaudit_logs Audit.csv" $ AuFileLRD = "c: scripts printaudit_logs last_run.csv" $ AuFileRep = "c: scripts printaudit_logs Audit_ $ name.html" $ smtpserver = "smtp.domain.local" $ adminrecip = "[email protected]" $ month = $ dat.addmonths (-1) | Sélectionnez un mois ################################### Mode test - annulation du commentaire # $ dat | Fichier de sortie $ AuFileLRD ################################################# ################################################# ######################################### #read_event_log quotidiennement à partir du courant $ b = @ () $ a = Get-WinEvent -ProviderName "Microsoft-Windows-PrintService" - Nomordinateur $ pserv | sélectionnez id, Message, TimeCreated # $ a = Get-WinEvent -Path 'C: scripts12013-082013.evtx' | sélectionnez id, Message, TimeCreated foreach ($ line in $ a) $ b + = $ line | sélectionnez Message, TimeCreated } #read event from file $ lastm = "_ $ ($ dat.addmonths (-1) .month) _ $ ($ dat.year)" créer une structure de dossier Remove-Item -Recurse -Force "c: scripts printaudit_logs stats $ ($ lastm)" new-item -ItemType Directory -path "c: scripts printaudit_logs stats $ ($ lastm)" -erroraction SilentlyContinue new-item -ItemType Directory -path "c: scripts printaudit_logs stats $ ($ lastm) uzivatelske" -erroraction en mode silencieuxContinuer new-item -ItemType Directory -path "c: scripts printaudit_logs stats $ ($ lastm) tiskarny" -erroraction ContinuSuite $ lr = "Dokument; Uživatel; IP; Tiskárna; IPPort; Velikost; Stran; Datum" $ lr | Fichier de sortie $ AuFileLRD $ lr | Out-File $ AuFileRaw foreach ($ rec en $ b) if ($ rec.message -notlike $ null) $ r = $ rec.message -replace "appartenant à", ";" $ r = $ r -remplacement "a été imprimé sur", ";" $ r = $ r -remplace "on", ";" $ r = $ r - remplace "par le port", ";" $ r = $ r -replace "Taille en octets:", ";" $ r = $ r -remplace ". Pages imprimées:", ";" $ r = $ r -remplace ". Aucune action de l'utilisateur n'est requise.", "" $ out = "$ ($ r); $ ($ rec.timecreated)" #sauvegarder dans un fichier brut $ out #sauvegarder dans un fichier brut # rapports générés $ Rep = Import-Csv $ AuFileLRD -Delimiter ";" $ psum = @ () $ usum = @ () $ imprimantes = $ rep | groupe tiskárna | sélectionnez le nom $ utilisateurs = $ rep | groupe uživatel | sélectionnez le nom # statistiques d'utilisateur foreach ($ us in $ users) groupe uživatel, tiskárna, stran # statistiques de l'imprimante foreach ($ pr dans $ imprimantes) $ prout = "c: scripts printaudit_logs stats $ ($ lastm) tiskarny $ ($ pr.name) $ ($ lastm) .csv" $ x = @ (); $ x + = $ Rep $ psum = $ rep | groupe tiskárna | trier le nombre -Descending | sélectionner le nom, compter $ usum = $ rep | le groupe uživatel, tiskárna | trier le nombre -Descending | sélectionner le nom, compter #envoi de mail $ body = "Zdravím,Statistiky za měsíc $ ($ lastm) naleznete v \ ophqms01 printaudit_logs.
S pozdravem
Admin " send-mailmessage -De [email protected] -Pour $ adminrecip -Subject "Imprimer audit" -Body $ body -BodyAsHtml -Encoding ([System.Text.Encoding]:: unicode) -smtpserver $ smtpserver Stop-Transcript
Commentaires
Laisser un commentaire