Si vous avez déjà cherché en vain à consigner des événements dans Windows, cette solution pourrait vous être utile. Au lieu de vous fier uniquement aux journaux textuels ou aux messages épars, écrire directement dans l’Observateur d’événements simplifie grandement le dépannage, surtout en cas de problème. Ce guide explique comment configurer PowerShell ou des scripts d’invite de commandes pour qu’ils écrivent ces journaux directement dans Windows, ce qui peut s’avérer très pratique pour le débogage ou le suivi des exécutions de scripts. Attention : selon les machines, le résultat peut être aléatoire ; parfois cela fonctionne, parfois vous obtenez des erreurs d’autorisation étranges. Notez que sur certaines configurations, vous devrez peut-être exécuter PowerShell en tant qu’administrateur pour un fonctionnement optimal, et la création de journaux personnalisés nécessite quelques étapes supplémentaires, mais reste tout à fait faisable.
Comment écrire des journaux d’événements à partir de PowerShell ou de l’invite de commandes sous Windows
Méthode 1 : Utilisation de la commande Write-EventLog de PowerShell
C’est la méthode la plus simple si vous utilisez une version de Windows qui la prend encore en charge. Elle est utile car elle génère des journaux bien formatés directement dans l’Observateur d’événements, ce qui facilite le suivi de l’activité de votre script ou la détection des erreurs. Cette méthode est pertinente si vous constatez qu’aucun événement n’apparaît dans l’Observateur d’événements lors de l’exécution de scripts ou de commandes, ou si vous avez besoin de sources d’événements personnalisées pour vos applications.
- Pour commencer, vous devrez peut-être créer une source spécifique, surtout si c’est la première fois que vous écrivez dans ce journal particulier. Utilisez :
New-EventLog -LogName Application -Source "MyScripts" - Si votre source est déjà configurée, il suffit d’exécuter :
Write-EventLog -LogName Application -Source "MyScripts" -EntryType Information -EventID 1001 -Message "PowerShell script started"
Cette commande ajoute un message au journal des applications avec votre source personnalisée. Une fois l’opération terminée, ouvrez l’ Observateur d’événementseventvwr.msc et vérifiez que l’événement apparaît bien dans la section « Application ». Sur certaines configurations, vous devrez exécuter PowerShell en tant qu’administrateur : Windows doit s’assurer que vous êtes autorisé à écrire dans les journaux. Si cela ne fonctionne pas, vérifiez vos autorisations.
Méthode 2 : Journalisation depuis l’invite de commandes avec eventcreate.exe
Si vous préférez exécuter des scripts depuis l’invite de commandes ou des fichiers batch, eventcreate.execet outil est un peu méconnu. Intégré à Windows, il ne nécessite aucune configuration supplémentaire. Concrètement, il crée directement une entrée de journal, sans complications.
- Voici un exemple :
eventcreate /t information /l application /id 1 /d "Batch script started"
C’est simple mais efficace : un message apparaît dans le journal des événements. Notez toutefois qu’il n’est pas possible de créer des journaux personnalisés comme avec PowerShell (ou du moins, pas facilement).Il est donc préférable d’utiliser les journaux par défaut, sauf si vous souhaitez effectuer des modifications plus complexes du registre et créer des journaux personnalisés.
Option 1 : Créer des journaux personnalisés pour vos scripts
Si le journal d’application par défaut ne vous suffit pas et que vous souhaitez un journal dédié, vous pouvez en créer un personnalisé. Cela s’avère utile pour le développement d’une application importante ou pour la création de journaux détaillés pour des scripts spécifiques. Voici comment procéder :
- Utilisez PowerShell :
New-EventLog -LogName CustomPSLog -Source "MyScripts"
Mais attention : avant de créer un événement, assurez-vous que le journal et la source existent. Il est conseillé de vérifier leur présence afin d’éviter les erreurs.
if (-not [System. Diagnostics. EventLog]::SourceExists('MyScripts')) { New-EventLog -LogName CustomPSLog -Source 'MyScripts' } Write-EventLog -LogName CustomPSLog -Source 'MyScripts' -EntryType Information -EventID 1 -Message "Test log entry"
Une fois cette opération effectuée, un nouveau journal nommé CustomPSLog devrait apparaître dans la section Journaux des applications et des services, et il sera visible dans l’Observateur d’événements. Les journaux sont stockés sous forme .evtxde fichiers %SystemRoot%\System32\Winevt\Logs, ce qui est tout à fait standard.
Note sur PowerShell Core (7+)
Voici le plus étrange : sur PowerShell Core (7 et versions ultérieures), cette fonctionnalité Write-EventLogn’est plus prise en charge. Il faut désormais recourir à des manipulations complexes avec New-WinEvent ou un fournisseur personnalisé. Cela peut s’avérer déroutant ; par conséquent, à moins d’être bien équipé pour gérer cette situation, il est peut-être préférable d’utiliser Windows PowerShell 5.1 ou d’exécuter les scripts avec l’ -UseWindowsPowerShelloption appropriée pour plus de simplicité.
Parfois, le simple fait d’importer le module Microsoft. PowerShell. Management suffit :
Import-Module Microsoft. PowerShell. Management -UseWindowsPowerShell Write-EventLog -LogName CustomPSLog -Source 'MyScripts' -EntryType Information -EventID 1 -Message "Testing in PS Core"
Important : Les autorisations sont essentielles.
Il est important de rappeler que vous devez disposer de droits d’administrateur pour créer des journaux ou des sources, notamment pour les journaux personnalisés. Les comptes non administrateurs sont limités et ne peuvent envoyer d’événements qu’aux journaux et sources existants créés par un administrateur. En cas d’erreur d’autorisation, exécutez PowerShell ou l’invite de commandes en tant qu’administrateur.
Et c’est peut-être, tout simplement, la raison pour laquelle certains journaux n’apparaissent pas ou ne peuvent pas être créés. Dans ces cas-là, la sécurité Windows n’est pas toujours votre alliée.
Résumé
- Créez une source
New-EventLogavant d’écrire, si nécessaire. - Utiliser
Write-EventLogpour ajouter des entrées aux journaux existants. - Pour CMD,
eventcreate.exeça fonctionne bien. - Vous souhaitez avoir votre propre journal dédié ? Créez-le
New-EventLoget vérifiez les autorisations. - PowerShell Core peut nécessiter quelques étapes supplémentaires ou une exécution en mode de compatibilité Windows PowerShell.
Conclure
Ce n’est pas la méthode la plus élégante pour consigner les informations — Windows peut être pénible avec la gestion des autorisations et des sources — mais une fois configurée, elle simplifie grandement le dépannage. Parfois, il suffit de connaître les bonnes commandes, de s’assurer de les exécuter avec les droits d’administrateur, et c’est tout. Car, bien sûr, Windows a la fâcheuse habitude de compliquer les choses inutilement.
J’espère que cela permettra à certains de gagner du temps, surtout si vous essayez d’automatiser les journaux ou de collecter des informations provenant de scripts exécutés sur plusieurs machines. Bonne chance !