Agregando funcionalidad a Active Directory Users and Computers
 

Hace poco me tocó volver a trabajar con una red que hacía mucho tiempo que no tocaba... muuucho tiempo... y me encontré con algo que había implementado cuando la red funcionaba con controladores de dominio bajo Windows Server 2003, que con la evolución de los sistemas operativos casi he dejado de usar, pero que creo que puede resultarles útil.

Lo que había hecho en ese momento, era agergar funcionaldiad a Active Directory Users and Computers (dsa.msc) para obtener más información sobre una cuenta de usuario que los DCs en 2003 no nos daban, y permitir el desbloqueo de la cuenta con un click.

Hoy con los DCs migrados a versiones más modernas, esta funcionalidad parecería obsoleta, ya que hoy brindan más información y también permiten el desbloqueo.. pero la incorporación de funcionalidad es igualmente válida.

Por donde empezamos?

Bueno, antes que nada deberemos conocer un poco del Schema de Active Directory, ya que estaremos tocando algo de la configuración via ADSIedit.MSC. Estos cambios, nos permitirán agregar opciones a los menúes contextuales de los objetos de AD.

Y también debemos saber que queremos hacer... es decir, que funcionalidad le vamos a incorporar... en nuestro caso, vamos a invocar a un script en vbs.

Funcionalidad

Como ya se indicó, esta funcionalidad hoy existe en los DCs bajo sistemas operativos modernos, pero el ejemplo sirve, ya que el script que se ejecute podría tener cualquier otra funcionalidad.
El script que nos ocupa en este caso es el siguiente.

Sabemos de antemano que el script se ejecutará invocado desde Active Directory Users and Computers por lo que el argumento que se pasará al mismo en forma automática será la cuenta de usuario...

A partir de alli, el script muestra información en pantalla y consulta al operador por acciones... podría hacer cualquier otra cosa, como crear carpetas para altas de usuarios, duplicar usuarios a partir de templates, etc. etc.

Ahora bien, si este script será ejecutado a partir de DSA.MSC, tiene que estar accesible desde cualquier lugar que se ejecute el DSA.MSC, tal vez no el lugar más seguro.. pero en este caso utilizamos NETLOGON, dado que el script es pequeño y se copia a todos los DCs cuando ocurre vía FRS

Nota: Recordemos que NETLOGON es un share ReadOnly, asi que para colocar alli el script desben hacerlo desde alguno de los DCs en forma local

Agregando la llamada

Bueno, ya tenemos el script listo, solo nos falta incorporar la funcionalidad en el DSA, para lo cual, como indicamos antes, tenemos que utilizar el ADSIedit, una herramienta terriblemnte poderosa... y peligrosa.. si no la usaron antes tengan mucha precaución de no cometer errores... y si la usaron antes... entonces.. mucha precaución de no cometer errores...

Para generar uan consola de ADSIedit, si no la tenemos generada, iniciamos una consola vacía, via inicio -> ejecutar MMC ENTER, luego dentro del MMC, incorporamos el complemento ADSI Edit..

Una vez con el complemento incorporado, hacemos click con el botón derecho del mouse sobre el mismo y seleccionamos "Connect To" o "Conectar a", y en la ventana de diálogo, seleccionamos "Configuration" ó "Configuración" en el ..Well Known Naming Context para conectarnos al contexto de conmbres correspondiente de AD.

Conectados ya a la configuración de AD, podremos incorporar la función sobre el objeto de AD que seleccionemos, en este caso, buscaremos dentro de nuestro dominio los "displaySpecifiers" que son los que indican que se muestra para cada objeto de ad. Una vez allí, buscaremos el CN 409 (Canonical Name = 409) que corresponde con Active Directory Users and Computers (aqui la necesidad de conocer el schema...).

Observaremos alli, centenares de objetos, deberemos buscar el que nos interesa, que en este caso es el display de la cuenta de usuario ó user-Display, una vez hallado, podremos modificarlo para incorporarle un puntero a nuestro script.

Hacemos doble-click sobre user-Display, para obtener todos los detalles del objeto, y veremos que la primer opción es adminContextMenu y es exactamente esa la que nos interesa.
Esta opción literalmente arma el menú contextual via los links que en ella se indican

Hacemos doble-click sobre adminContextMenu y estamos en condiciones de agregar nuestro script... para ello incorporaremos 3 opciones sepradas por comas, la primera, un número que corresponde a la posición en el menú en la cual queremos nuestra opción, en el ejemplo como la última opción es la 5, iremos con la 6, luego, la descripción o nombre que queremos que se muestre en el menú contextual, y por último el link a nuestro script, y presionamos ADD. Cerramos, las ventanas, cerramos ADSIedit y estamos en condiciones de probar

Prueba

Si hemos hecho bien las cosas, podemos hacer una prueba directa desde cualquier DSA, alcanzará con abrir un DSA, buscar un usuario y hacer click con el botón derecho del mouse, y nuestra opción debería aparecer... pero ojo... eso no implica que funcione... para que funcione, el script tiene que estar accesible, poderse ejecutar y el link en la opción debe correcto

Conclusiones

Muchos viejos administradores... como yo.. créanme más en lo de viejo, que en lo de administrador... tuvimos que hacernos de herramientas que los sistemas operativos no daban.. estas herramientas fueron siendo incorporadas a los sisetmas operativos, pero no por eso pasaron a ser obsoletas, ya que las técnicas desarrolladas son aún útiles y permiten solucionar nuevos problemas.. en este caso, las funcioens del script están hoy cubiertas por ad.. pero si reemplazan el script por otro que digamos... crear carpetas para un usuario nuevo... envía documentación de bienvenida... desarrolla procedimientos de baja. etc. las posibilidades de automatización y ahorro de tiempos se multiplican.

 

 

Volver a lista de Notas