Le journal des événements Windows est un outil important qui permet aux administrateurs de suivre les erreurs, les avertissements et les autres rapports d’information consignés par le système d’exploitation, ses composants ou ses programmes.
Vous pouvez utiliser le snap-in graphique MMC de l’Observateur d’événements (eventvwr.msc) pour afficher le journal des événements de Windows. Dans certains cas, il est beaucoup plus pratique d’utiliser PowerShell pour analyser les informations des journaux d’événements. Dans cet article, vous apprendrez à utiliser la cmdlet Get-WinEvent pour obtenir des informations à partir des journaux d’événements Windows.
Get-WinEvent : Recherche dans les journaux d’événements à l’aide de PowerShell
Lorsque vous utilisez la commande sans aucun paramètre, PowerShell liste l’ensemble des journaux Windows.
Get-WinEvent
Pour filtrer sur un journal, utilisez l’option -LogName suivi du nom.
Get-WinEvent -LogName system
Get-WinEvent -LogName security
Autre exemple pour récupérer tous les évènements “disk” avec une erreur matériel (Microsoft-Windows-Kernel-WHEA) !
Get-WinEvent -LogName *disk*, Microsoft-Windows-Kernel-WHEA
De plus, vous pouvez restreindre le nombre d’évènements grâce l’option -MaxEvents.
Get-WinEvent -LogName Application -MaxEvents 30
Par défaut, la commande affiche les colonnes Date de création, Id, niveau du message et message.
Pour afficher ou masquer des colonnes, utilisez la cmdlet Format-table comme ceci.
Get-WinEvent -LogName System | Format-Table Machinename, TimeCreated, Id, UserID, Message
Filtrer sur les journaux
Nous l’avons vu il est possible de filtrer sur un journal.
Pour obtenir la liste complète, utilisez la commande suivante :
Get-WinEvent -ListLog *
Puis utilisez le paramètre LogName pour spécifier le journal des événements de Windows PowerShell
Get-WinEvent -LogName Microsoft-Windows-Winlogon/Operational
Ou encore pour obtenir les événements d’erreur dont le nom contient une chaîne de caractères spécifiée :
Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* | Group-Object -Property LevelDisplayName, LogName -NoElement Group-Object -Property LevelDisplayName, LogName -NoElement | Format-Table -AutoSize
Comment chercher des évènements dans les journaux Windows en PowerShell
L’argument FilterHashtable vous permet de filtrer en fonction des attributs d’événements suivants :
- LogName
- ProviderName
- Path
- Keywords (use 9007199254740992 to search for successful events and 4503599627370496 for failed ones)
- ID
- Level (1=FATAL, 2=ERROR, 3=Warning, 4=Information, 5=DEBUG, 6=TRACE, 0=Info)
- StartTime
- EndTime
- UserID (user’s SID)
- Data
Extraire les évènements d’un journal spécifique
Extraire tous les journaux d’événements de Windows Defender en direct :
Get-WinEvent -FilterHashtable @{logname="Microsoft-Windows-Windows Defender/Operational"}
Beaucoup d’évènements identiques sont répétés.
Pour compter le nombre d’évènement par leur EventID :
Get-WinEvent -LogName "Windows PowerShell"| Group-Object -Property Id -NoElement | Sort-Object -Property Count -Descending
Filtrer sur les niveaux (erreurs, avertissements, etc)
Vous pouvez avoir besoin de filtrer des évènements des journaux Windows.
Par exemple, si vous souhaitez obtenir des informations sur les erreurs et les avertissements des journaux Système et Application pour les dernières 24 heures, utilisez le code suivant :
$StartDate = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent Application,System | Where-Object {($_.LevelDisplayName -eq "Error" -or $_.LevelDisplayName -eq "Warning") -and ($_.TimeCreated -ge $StartDate )}
Filtrer sur un EventID, Chemin, Données, etc
Si vous avez besoin de trouver des événements par EventID, utilisez la commande suivante avec le paramètre FilterHashtable :
Get-WinEvent -FilterHashtable @{logname='System';id=1074}|ft TimeCreated,Id,Message
Filtrer sur le message
Si vous souhaitez chercher des évènements sur un mot clé, vous pouvez aussi utiliser cette syntaxe :
Get-WinEvent -FilterHashtable @{logname='System'}|Where {$_.Message -like "*erreur*"}
Exporter les évènements des journaux Windows
Vous pouvez très facilement exporter les journaux Windows grâce à l’option -FilterXML
Voici un exemple d’export en CSV :
$Events= Get-WinEvent -FilterXML $xmlQuery
$events| Export-CSV "C:\outils\FiltresJournauxWindows.csv" -NoTypeInformation -Encoding UTF8
Liens
L’article Interroger les journaux d’événements Windows avec PowerShell est apparu en premier sur malekal.com.
0 Commentaires