En vue d’une éventuelle mise en place d’un event collector permettant de centrer en un seul et même endroit tous les logs générés par les machines et lisibles en local dans l’event viewer, j’ai développé un petit script Powershell permettant une compression automatique des logs présents dans un répertoire dans un but d’archive. Le script ne retourne aucune information et ne procède à aucune vérification puisqu’il est idéalement appelé depuis une tâche planifiée et les droits de lecture/écriture par rapport au compte d’exécution auront été contrôlés auparavant. La journalisation étant activée, il sera possible de tracer les actions de 7z.exe et constater le succès ou l’échec de l’archivage.
Le script exécute 7-Zip, compresse les fichiers *.evtx dans une archive puis les supprime. Il conviendra naturellement d’adapter les chemins en fonction de l’environnement.
$7zpath = "C:\Program Files\7-Zip"
$logpath = "C:\events\logs-files\*.evtx"
$archivepath = "C:\events\archives"
$date = Get-Date -Format "yyyy-MM-dd"
$archivename = "logs-archive-$date.zip"
$7zreport = "C:\events\7z-compresslog-$date.log"
cd $7zpath
.7z.exe a "$archivepath$archivename" -r $logpath -mx=9 -bb -sdel > $7zreport 2>&1