Usare PowerShell per analizzare i log degli eventi

Monitorare i log degli eventi di Windows è un supplizio, specialmente per chi è amministratore anche sistemi *NIX.

Fin da Windows Server 3.x esistevano tool per esportare gli eventi e analizzarli, ma l’elaborazione veniva fatta su una copia offline dei log.

PowerShell viene in aiuto a chi deve fare ricerche o elaborazioni attraverso le famiglie di comandi *-EventLog (per il formato degli eventi fino a XP/2003 Server) e *-WinEvent (per i log da Vista/2008 Server).

Per esempio, il comando per visualizzare gli ultimi 10 eventi del log di sicurezza è:

Get-EventLog -newest 10 -logname security

Ovviamente l’output di Get-EventLog può essere inviato ad uno dei formatter della PowerShell, ma può essere anche assegnato ad una variabile per un’elaborazione successiva, in questo modo:

$errori = Get-EventLog -logname system -EntryType Error
$errori | group-object -property source -noelement | sort-object -property count -descending

per avere un conteggio ordinato in ordine decrescente di tutti gli errori del log di sistema. Se il log è cospicuo, il primo comando potrebbe richiedere qualche decina di secondi.

Ancora più utile è aggregare i log di più server per successive analisi:

$errori = Get-EventLog -logname system -EntryType Error -computername localhost, server2, server3

Purtroppo non esiste ancora un equivalente di tail -f tra i formatter standard della PowerShell, ma si può utilizzare l’oggetto Net.Mail per inviare mail di avviso se si presentano eventi di un certo tipo schedulando uno script che estrae gli eventi utilizzando il parametro -after per filtrare gli eventi in base alla data.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

2 pensieri riguardo “Usare PowerShell per analizzare i log degli eventi”

  1. Sarà… ma a me “Get-EventLog -newest 5 -logname security” restituisce gli ultimi “5” eventi del log di sicurezza.

    🙂

    Grazie per le sempre gradite “dritte”, Luigi!

Spazio per un commento