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.
Lascia un commento