Encontrar equipo mediante PowerShell que ha bloqueado a usuario en Active Directory

Localizar el equipo en el que se ha metido mal la contraseña y por tanto ha bloqueado a un usuario en el active directory de Windows

Posted by David Guillermo on Tuesday, May 21, 2024

Bueno en los últimos meses hemos tenido un usuario que tenía ‘algo’ cacheado en el perfil de una máquina y nos estaba volviendo locos, yo realizaba busquedas en una aplicación especifica de red, otro compañero revisaba los logs de auditoria y no conseguíamos localizar en PC exacto en el que se bloqueaba el usuario, después de mucho buscar y medida ‘drasticas’ hoy compróbe gracias a tutorialesit localizar dicho PC, realicé la comprobacion forzando el bloqueo.

El comandon sería el siguiente.

$Usr = ‘nombre usuario’
$Pdc = (Get-AdDomain).PDCEmulator
$ParamsEvn = @{
‘Computername’ = $Pdc
‘LogName’ = ‘Security’
‘FilterXPath’ = "*[System[EventID=4740] and EventData[Data[@Name='TargetUserName']='$Usr']]"
}
$Evnts = Get-WinEvent @ParamsEvn
$Evnts | foreach {$_.Properties[1].value + ' ' + $_.TimeCreated}

Además cómo bonustrack, a veces algún usuario me preguntó cuanto tiempo le quedaba para cambiar la contraseña y lo hacía así;

Get-AdUser "USER" -Properties *| more

Y en la salida buscaba el PasswordLastSet, pero ahora gracias al tutorialesit, lo veo de la siguiente forma.

Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False -and userPrincipalName -like '*'}  –Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property "Displayname","userPrincipalName",@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} |
Sort-Object -Property ExpiryDate

Seguramente, vaya actualizando la entrada con más comandos de PowerShell, pq es algo a lo que me he ido negando a meterme y me gustaría mantenerme muy alejado de él xD.