Chaque administrateur système Windows est probablement familier avec le journal des événements Windows. En utilisant cette commande dans PowerShell, les administrateurs système peuvent analyser de nombreux événements en une seule fois sur plusieurs ordinateurs. Cela libère les administrateurs système de cliquer partout dans l’Observateur d’événements pour trouver le bon filtre à utiliser et déterminer où cet événement critique est précisément stocké. Cependant, Get-EventLog
a ses défauts que vous verrez.
Liste des journaux d’événements avec Get-EventLog
La commande Get-EventLog
est disponible sur toutes les versions modernes de Windows PowerShell. Dans son utilisation la plus simple, cette commande a besoin d’un journal d’événements à interroger, qu’elle affichera ensuite tous les événements de ce journal d’événements.
Mais que faire si vous ne connaissez pas le nom du journal d’événements en premier lieu ? Dans ce cas, nous devons déterminer tous les journaux d’événements disponibles sur notre ordinateur local. Nous faisons cela en utilisant la commande Get-EventLog -List
.

Vous pouvez voir que j’ai quelques journaux d’événements sur mon système local maintenant, mais vous vous demandez peut-être où sont les autres ? Des dizaines d’autres journaux d’événements apparaissent sous Applications et Services dans l’Observateur d’événements. Pourquoi ne sont-ils pas ici ?
Si vous avez besoin de ces événements, malheureusement, Get-EventLog
ne fonctionnera pas. Au lieu de cela, vous devrez consulter Get-WinEvent. La commande Get-EventLog
pourrait être considérée comme une commande héritée à ce stade, mais c’est une commande que j’utilise encore fréquemment simplement parce qu’elle est si facile à utiliser.
Interrogation des événements avec Get-EventLog
Maintenant que nous connaissons tous les journaux d’événements disponibles, nous pouvons maintenant lire les événements dans ce journal d’événements. Peut-être que je veux voir tous les événements dans le journal d’événements de l’Application. Pour obtenir ces événements, je dois spécifier le paramètre LogName
avec Get-EventLog
et le cmdlet s’oblige à renvoyer tous les événements dans ce journal d’événements.

Par défaut, vous ne verrez que six propriétés dans la sortie :
Index
Time
EntryType
Source
InstanceId
Message
En réalité, Get-EventLog
en renvoie 16. La raison pour laquelle vous n’en voyez que six est due aux règles de mise en forme de PowerShell qui définissent la sortie. Voici un exemple de la sortie réelle trouvée en redirigeant Get-EventLog
vers Select-Object
et en sélectionnant toutes les propriétés.

Filtrage avec Get-EventLog
Il est probable que lors de la recherche d’événements, nous n’ayons pas besoin de tous les événements. Au lieu de cela, nous n’avons besoin que de quelques-uns. Dans ce cas, nous devons filtrer pour des événements particuliers. Get-EventLog
propose plusieurs façons de le faire. Le cmdlet Get-EventLog
peut filtrer en fonction de l’horodatage, du type d’entrée, de l’ID d’événement, du message, de la source et du nom d’utilisateur. Cela couvre la plupart des façons de trouver des événements.
Pour démontrer le filtrage, peut-être que je fais des requêtes d’événements de temps en temps et que je veux trouver les dix événements les plus récents. Dans ce cas, je peux utiliser le paramètre Newest
et spécifier le nombre d’événements que je souhaite voir. Get-EventLog -LogName Application -Newest 10
ne renverra que les dix derniers événements.
Peut-être que je veux trouver tous les événements après un moment particulier. Pour cela, nous avons le paramètre After
. Le paramètre After
prend une date/heure, donc si je veux trouver uniquement les événements dans le journal d’application qui se sont produits après le 26/01/19 à 10h17, je pourrais faire cela Get-EventLog -LogName Application -After '26/01/19 10:17'
. Nous pourrions également effectuer le même processus mais sélectionner les événements qui se sont produits avant une certaine date avec, vous l’avez peut-être deviné, le paramètre Before
.
Le Get-EventLog
a beaucoup de façons différentes de filtrer, sans inclure la date et l’heure. Nous pouvons également filtrer les événements en fonction d’autres attributs tels que l’ID d’événement (ID d’instance) et le message qui sont des attributs courants à rechercher. Peut-être que je sais que je recherche un événement avec un ID de 916; nous passerions 916 au paramètre InstanceId
.
Nous pouvons également combiner des filtres. Peut-être que je reçois beaucoup d’événements renvoyés avec un ID de 916, mais je veux ces événements avec la chaîne svchost dans le message. Dans ce cas, nous pouvons ajouter le paramètre Message
à Get-EventLog
et spécifier un joker comme svchost.
Script Bonus!
Avez-vous besoin d’un excellent exemple d’utilisation de Get-EventLog dans un script du monde réel? Si oui, vous avez de la chance! Ci-dessous se trouve un cas d’utilisation avancé de Get-EventLog
que vous pouvez télécharger et utiliser dès aujourd’hui!
Résumé
Le cmdlet Get-EventLog
est une excellente commande à utiliser si vous vous trouvez jamais dans le besoin d’interroger rapidement l’un des journaux d’événements courants. Il est facile à utiliser et fournit une certaine capacité de filtrage de base. Cependant, si vous avez besoin de faire des recherches approfondies dans les journaux d’événements, la commande Get-WinEvent
fonctionnera probablement mieux, mais elle est un peu plus difficile à utiliser et nécessite parfois de connaître la syntaxe comme XPath.