Active Directory: Mostrar y Editar Atributos Ocultos

Si han investigado un poco Active Directory seguramente habrán visto que, por ejemplo, una cuenta de usuario tiene disponibles muchos más atributos que los que muestra la aplicación “Active Directory Users and Computer” (Usuarios y Equipos de Active Directory). Algunos no se pueden modificar porque son utilizados internamente, pero muchos otros son informativos y podemos utilizarlos, y además editarlos fácilmente con un pequeño script

Todo comenzó, cuando revisando unas viejas notas encontré un script, que supongo que era para Windows 2000, pero todavía sigue siendo válido, y fue lo que me animó a escribir esta nota

Para probar todo lo que sigue recomiendo que no se haga nunca directamente en ambiente productivo, por los riesgos que implica. Primero en un ambiente de laboratorio, probarlo muy bien, y si todo anda bien recién llevarlo al ambiente real

Para comenzar, vamos a habilitar en “Active Directory Users and Computers” la opción de vista avanzada desde “View / Advanced features”

Yo he creado dos usuarios de prueba (User Uno y User Dos) para poder hacer la demostración

Como tenemos puesta la opción de vista avanzada, si ingresamos a las propiedades de cualquier usuario (los de prueba mejor) veremos que tenemos una ficha “Attribute Editor” que muestra realmente todos los atributos que tiene una cuenta de usuario, tanto los visibles normalmente, como los que no, por ejemplo el campo “Employee ID”

Convengamos que esto sería realmente incómodo tener que editarlos y visualizarlos de esta forma, pero vamos a ver cómo facilitar el tema

Si en lugar de entrar a las propiedades de cada usuario, hacemos una búsqueda podemos seleccionar qué columnas deseamos ver, y en este caso se podrán visualizar (algunos…)

Nos faltaría poder ingresar valores en este campo, pero sin necesidad de estar ingresando a la ficha “Attribute Editor” de cada usuario. Esto lo podemos hacer fácilmente con un pequeño script VBS, pero además debemos indicarle que ejecute el script para que nos dé la opción de modificación del campo en el menú contextual

Primero configuraremos para que ejecute el script cuando pulsemos botón derecho sobre una cuenta de usuario, para lo cual debemos ejecutar como administradores ADSIEdit

Debemos conectarnos a la partición de la base llamada “Configuration”

Y debemos poner el foco en “Configuration / CN=Configuration,DC=<NuestroDominio> / CN=DisplaySpecifiers / CN=409” y entrar en las propiedades de CN=user-Display
Aclaración: 409 es para inglés

Editamos “adminContextMenu”

Y agregar una nueva opción, sin repetir ningún número inicial. En mi caso yo pondré un script llamado “EmployeeID.vbs” en una carpeta “C:\Test”, y así lo indico

Y aceptamos

Entonces creo la carpeta “C:\Test” y pongo el script “EmployeeID.vbs” cuyo contenido es:

‘ ————————————————————————-
‘       Script by Sakari Kouti (see http://www.kouti.com)
‘ You have a royalty-free right to use, modify, reproduce and distribute
‘ this script (and/or any modified version) in any way you find useful,
‘ provided that you agree that Addison-Wesley or Sakari Kouti has no
‘ warranty, obligations or liability for the script. If you modify
‘ the script, you must retain this copyright notice.
‘ ————————————————————————-
Option Explicit
Dim wshArguments, objUser, objSchemaEmployeeID, strCurrentID, strEmployeeID, intMaxLen

On Error Resume Next

Set wshArguments = WScript.Arguments
Set objUser = GetObject(wshArguments(0))
Set objSchemaEmployeeID = GetObject(«LDAP://schema/employeeID»)

intMaxLen = objSchemaEmployeeID.MaxRange

If objUser.employeeID <> «» Then
strCurrentID = objUser.employeeID
Else
strCurrentID = «empty»
End If

strEmployeeID = InputBox( _
«The current Employee ID is » & strCurrentID & vbCrLf & _
vbCrLf & _
«Enter the new Employee ID (1 through » & intMaxLen & » chars)», _
Right(objUser.Name, Len(objUser.Name) – 3) & » Employee ID», _
objUser.employeeID)

If strEmployeeID = «» Then WScript.Quit   ‘User clicked Cancel

If Len(strEmployeeID) > intMaxLen Then
MsgBox «The new Employee ID was too long and it was not saved.», _
vbCritical, «Error Occurred»
Else
Err.Clear
objUser.employeeID = strEmployeeID
objUser.SetInfo
If Err Then MsgBox «The new Employee ID was not saved.», _
vbCritical, «Error Occurred»
End If
‘ ————————————————————————-

 

Ya tenemos todo preparado :-)

Si tuviéramos abierta la consola “Active Directory Users and Computers”, debemos cerrarla y volverla a abrir para que surta efecto

Y con botón derechos sobre una cuenta de usuario veremos que aparece la opción, y que podemos modificar su valor

 

Pero hay algo más que quedó pendiente, si revisan las capturas de pantalla más desde el principio verán que además de “Employee ID”, hay otros campos que no muestra cuando vamos a seleccionar columnas, por ejemplo “Employee Type”

“Employee Type” figura la ficha “Attribute Editor”, pero no aparece al seleccionar columnas para el resultado de la búsqueda

¿Serán “super ocultos”? :-D
No, no son así, sólo que ha que indicarle que los muestre

Para esto debemos volver a ADSIEdit y a

“Configuration / CN=Configuration,DC=<NuestroDominio> / CN=DisplaySpecifiers / CN=409” y entrar en las propiedades de CN=user-Display
Y editar “attributeDisplayNames”

Agregando el nombre del campo y el texto a mostrar

Aceptando los cambios

Y ahora aparece como columna seleccionable

Con un poco de habilidad podemos crear un script análogo que permita su fácil edición

 

Esto es sólo el comienzo, para que cualquiera que necesite usar alguna propiedad que aunque está definida no es fácilmente usable pueda comenzar a probar el tema de acuerdo a su propia necesidad. Si revisan todos los atributos que hay disponibles seguramente encontrarán alguno que les va a ser útil, o inclusive, se podría usar alguno para un uso parecido, por ejemplo el “carLicense” como número de documento (DNI)

 

Además podemos agregar nuestros propios atributos de acuerdo a necesidad, y con un script similar al mostrado, editarlos fácilmente. Vean la nota Active Directory: Agregar Atributos Personalizados

 

 

Publica un comentario o deja una referencia: URL de la referencia.

Comentarios

  • jecavallin  El 07/10/2014 a las 13:17

    Buuuena Guillermo!!! :)

  • Alexander  El 03/11/2015 a las 10:38

    Guillermo buen día.
    Como seria el script para agregar fecha cumpleaños , donde encuentro estos scripts??

  • Kike Salgado  El 25/05/2017 a las 19:13

    Hola Guillermo, muy buen post. Trato de agregar el campo EmployeeType, mostrarlo para edicion en vez del EmployeeID, ya edite el script pero cuando lo invoco no abre en absoluto nada. a que crees que se deba? saludos.

    • Guillermo Delprato  El 25/05/2017 a las 19:46

      Hay muchas posibilidades de confusión, desde la sintaxis del nombre, el tipo de dato, etc.
      Realmente lo único que se me ocurre es que revises cada uno de los pasos. O probar primero en un ambiente de pruebas con EmployeeID y luego tratar el EmployeeType

  • Oscar Flores Ramírez  El 24/07/2019 a las 14:39

    Hola buenas tardes en un aparte comentas «Aclaración: 409 es para inglés» cual seria para español y si hay alguna diferencia y cual seria te agradeceria muchismo

    • Guillermo Delprato  El 24/07/2019 a las 19:08

      Hola Oscar, no lo recuerdo en este momento, revisa los diferentes a ver si hay uno que haga referencia a Spa o Spanish. O busca en la web porque seguro está documentado

Trackbacks

Replica a Guillermo Delprato Cancelar la respuesta

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.