dimanche 8 juin 2014

Powershell : journal d'événements (get-eventlog et get-winevent)


Un article sur la gestion des événements en powershell.

Afficher les événements

Lister les événements classiques :
Get-eventlog -list

Lister tous les événements :
Get-winevent -listlog * | select logname

Lister les événements de sécurité dans les 100 dernières entrées
get-eventlog -new 100 -Logname Security

Lister les événements de sécurité dans les 100 dernières entrées (ouverture de session : 4624, fermeture de session 4634) pour un utilisateur (guillaume, syntaxe simple mais peu précise)
get-eventlog -new 100 -Logname Security -InstanceId 4624,4634 -Message "*guillaume*" | fl TimeWritten,entrytype,eventid,message

Même commande mais autre syntaxe, en utilisant le splatting :
$params = @{ new= 100
                        logname= "security"
                        instanceid = 4624,4634
                        message = "*guillaume*"  }
get-eventlog @params | fl TimeWritten,entrytype,eventid,message

Afficher un événement spécifique via id (index) :
Get-eventlog -logname system -Index 227211 | fl

Afficher les événements datant de 2 jours maximum 
$jours=(Get-Date).AddDays(-2)
Get-Eventlog -LogName "security" | Where-Object {$_.TimeGenerated -ge $jours}
ou
Get-WinEvent -LogName "security" | Where-Object {$_.TimeCreated -ge $jours}

Exporter et importer

Exporter les événements :
Get-EventLog System | Export-CliXml "c:\temp\eventsystem.clixml"

Vous pouvez ensuite travailler sur l'élément exporté :
$systemlogs = Import-CliXml "c:\temp\eventsystem.clixml"
$systemlogs | fl TimeWritten,entrytype,eventid,message

Vous pouvez aussi exporter les événements avec la commande suivante :
wevtutil epl System "c:\temp\eventsystem.evtx"
Et utiliser le fichier dans powershell de la manière suivante
Get-winevent -path "c:\temp\eventsystem.evtx"

Création d'événement et de catégories

Création de catégories
New-EventLog -Logname Script -Source eventtest
Logname : nom de la catégorie
Source : nom de l'élément (application) qui inscrit les événements dans le journal

Suppression d'une catégorie
Remove-EventLog -LogName script

Suppression d'une source
Remove-EventLog -Source eventtest

Inscrire un événement :
Write-EventLog -LogName script -Source eventtest -EventId 1234 -Message "Bonjour à tous"