Active Directory: Auditar eventos de bloqueo de usuarios con Powershell (Parte I)

Puede ser util llevar un recuento de los usuarios bloqueados del dominio, para investigar los usuarios recurrentes o simplemente para llevar estadisticas de incidencias.
En Windows 2008 los eventos de bloqueo de cuentas quedan registrados en el visor de eventos de 'Seguridad' con el id 4740.
Con el cmdlet get-winevent podemos recuperar esos eventos (que usuario, cuando y desde que maquina) y guardarlos en un log para su posterior analisis.

Este script esta pensado para ejecutarlo desde el task scheduler varias veces al dia.

$fecha=get-date -format MMMM_yyyy
$logfile="LockedoutEvents_$fecha.txt"
#conectar con los visores de eventos de los DC's
$DCs="SERVERDC03","SERVERDC04","SERVERDC05"
Foreach ($DC in $DCs)
{
write-host "Recuperando eventos de $DC..."
$lockoutevents=Get-WinEvent -ComputerName $DC -FilterHashtable @{LogName='Security';Id=4740} -erroraction silentlycontinue
if ($lockoutevents -ne $null)
{
 foreach ($event in $lockoutevents)
 {
 $quien=$Event.Properties[0].Value 
 $cuando=get-date($Event.TimeCreated) -uformat "%d/%m/%Y %H:%M:%S"
 $donde=$Event.Properties[1].Value
 out-file $logfile -input "$cuando $quien $donde" -append
 }#fin foreach events
}#fin if events not null
}#fin foreach DCs

#limpio el log de eventos repetidos
$cleanlogfile=get-content($logfile)|select -unique
$cleanlogfile|out-file $logfile
Como los eventos de Seguridad son muy ciclicos, he programado esta tarea para que se ejecute cada hora desde el PDC emulator. Con las ultimas dos lineas del script me aseguro de no almacenar el mismo evento varias veces.

Echa un vistazo al post: Auditar eventos de bloqueo de usuarios (Parte II) para ver una manera rapida de consultar los logs.

Comentarios