En nuestra red posiblemente tengamos aplicadas un buen número de políticas de seguridad referentes a las cuentas o elementos en el directorio activo. Varias de estas seguro se encargan de bloquear cuentas ante diferentes escenarios. Al mismo tiempo el desbloqueo de estas cuentas puede ser algo que tengamos que ejecutar bajo demanda, para ello vamos a ver hoy cómo podemos realizarlo rápidamente con Powershell.
Instalando el módulo para Powershell
Primero comprobaremos si el módulo de Powershell del AD está instalado. Para ello lanzaremos el siguiente comando que nos devolverá un State=Installed en caso de ya disponer del mismo.
Get-WindowsCapability -Name Rsat.ActiveDirectory* -Online | Select DisplayName, State
En caso que no lo tengamos instalado (State = NotPresent) lo instalaremos de la siguiente forma.
Get-WindowsCapability -Name Rsat.ActiveDirectory* -Online | Add-WindowsCapability -Online
Buscar usuarios bloqueados con Search-ADAccount
Con el siguiente cmdlet podemos localizar todos aquellos usuarios que se encuentren bloqueados.
Search-ADAccount -LockedOut -UsersOnly | Select Name, SamAccountName
El cmdlet Search-ADAccount nos permite aparte de buscar aquellas cuentas bloqueadas como en este ejercicio, también encontrar aquellas deshabilitadas, caducadas, inactivas, con el password a punto de expirar o aquellas cuyo password nunca expire..como veis es bastante flexible.
Desbloquear usuarios
Ahora utilizaremos el cmdlet Unlock-ADAccount para desbloquear aquellos usuarios que necesitemos. Para identificarlos utilizaremos el parámetro -Identity contra el que podemos utilizar el nombre distinguido, el nombre de cuenta SAM, el identificador de seguridad SID o el identificador único global GUID. En el siguiente ejemplo vamos a desbloquear al usuario "Nombre de ejemplo"
Unlock-ADAccount -Identity "Nombre de ejemplo"
Comprobar resultado
El comando anterior no nos devolverá ninguna salida por pantalla por lo que para comprobar si se ha realizado correctamente la operación podemos lanzar una consulta sobre el estado de la propiedad LockedOut, como vemos a continuación.
Get-ADUser -Identity "Nombre de ejemplo" -Properties LockedOut
Desbloqueando múltiples cuentas
Si lo que queremos es desbloquear una serie de cuentas yo recomendaría ejecutar el anterior comando a través de un script que tomara un listado de usuarios.
En caso que queramos desbloquear todas las cuentas que tengamos bloqueadas o un buen número de ellas y prefiramos confirmar cuáles al vuelo, podemos lanzar la siguiente consulta que encontrará primero las bloqueadas y luego con irá pidiendo confirmación para desbloquearlas una a una, debido al parámetro -Confirm
Search-ADAccount -LockedOut -UsersOnly | Unlock-ADAccount -Confirm
Podemos alternativamente quitar ese parámetro para desbloquearlas todas directamente, pero salvo en un escenario de tests no creo que queramos lanzar eso de manera masiva.
Espero que os sea de utilidad