Arquitectura de Sistemas y administracion.

Script para desbloquear usuarios del Directorio Activo

dejar un comentario »

_locked.JPG

El siguiente script busca en Active Directory todos los objetos “usuario” que actualmente se encuentren lockeados por intentos fallidos de logon y los desbloquea automáticamente.

La idea es realizar una consulta a la base LDAP mediante ADODB pero obteniendo solo aquellos usuarios que esten lockeados. Para eso realizamos la consulta teniendo en cuenta dos cosas:

  • Que los objetos sean USUARIOS, mediante la clausula “objectcategory=user”
  • Que el tiempo de lockeo sea mayor a 1, lo que indicaría que realmente esta lockeado.

El script obtiene los usuarios lockeados y los desbloquea una vez recorriendo el recordset de principio a fin. Puede agregarse en una tarea programada para que quede corriendo indefinidamente para que no haya necesidad de que un operador desbloquee las cuentas todo el tiempo.

Const ADS_SCOPE_SUBTREE = 2Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
bjConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
bjCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT distinguishedName FROM 'LDAP://dc=domain,dc=com' WHERE _
objectCategory='user' AND lockoutTime>=1"
Set objRecordSet = objCommand.Execute
' Si el recordset esta vacio es porque no hay usuarios bloqueados.
CANTIDAD = objRecordSet.RecordCount
if CANTIDAD <> 0 then
  objRecordSet.MoveFirst
  Do Until objRecordSet.EOF
    DN = objRecordSet.Fields("distinguishedName").Value
    set objUSER = getobject("LDAP://" & DN)
    objUser.IsAccountLocked = false
    objUSER.SetInfo
    objRecordSet.MoveNext
  loop
end if
wscript.quit

Escrito por elarquitecto

20 Agosto 2008 a 15:48

Escribe un comentario

Tienes que iniciar sesión para escribir un comentario.