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”? 😀
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

Post a comment or leave a trackback: Trackback URL.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *