El siempre tedioso mapeo de unidades e impresoras y una solución.

El problema


En toda red siempre hay una necesidad, los usuarios tienen que disponer en sus ordenadores de las unidades de red e impresoras que requieran para poder trabajar.


Las soluciones a este problema dependerán de los requisitos de la empresa, el número de usuarios, la preocupación por la seguridad y la evolución tecnológica del departamento de TI al cargo.


En mi caso y dado que mi religión me prohíbe tolerar conscientemente cosas ineficientes, hasta ahora siempre he usado scripts de inicio de sesión que asignaban las unidades de red e impresoras en base a la pertenencia a grupos, de esta forma te aseguras que los usuarios al arrancar sesión tendrán siempre sus unidades e impresoras disponibles.


Esta solución está bien o mejor dicho estaba bien, como siempre he dicho hay que replantearse las cosas y mejorarlas. Las razones que me motivan a buscar un cambio son las siguientes:


-El asunto se ha complicado un poco con Vista especialmente con UAC, usuarios sin privilegios, escenarios con múltiples scripts de inicio de sesión y mas aun con GPOs “anidadas” (Ver: http://www.gpanswers.com/community/viewtopic.php?p=5718 para descubrir el maravilloso mundo del launchapp2.wsf)  segun como sea tu entorno te encontraras con algunos problemas con los scripts de inicios de sesión en Vista.


-Cuando se tienen muchos usuarios, grupos, impresoras, unidades, departamentos, localizaciones, etc los scripts se hacen kilométricos, difíciles de mantener y susceptibles del mayor virus de las redes; “el error humano” (aka: dedos gordos).


Un poco de culturilla


El Directorio Activo (AD) grande entre los grandes, nos propone como ya sabéis la posibilidad de crear shares e impresoras como objetos del mismo, los shares se materializaran en instancias de la clase “volum” y las impresoras en instancias de la clase “print-queue”.


El AD es un directorio LDAP y como tal tiene una estructura jerárquica, esto permite que todos los objetos del directorio activo, puedan ser nombrados o accedidos conociendo la ruta jerárquica completa, al atributo de un objeto que almacena esta ruta completa se lo denomina DistinguishedName o DN para abreviar.


Las clases del AD y por lo tanto los atributos que tiene cada clase están definidas en el Schema, cuando un atributo puede contener más de un valor se le denomina “multi-value”.


 En el AD muchos objetos referencian a otros, por ejemplo un usuario, tiene un atributo de tipo DN y multi-value que se denomina “member-of” en el cual se almacenan el DN de todos los grupos a los que pertece, por el contrario todos los grupos tienen un atributo de tipo DN y multi-value denominado “members” donde se encuentran todos usuarios que pertenecen al grupo, a esto se le llama “linked-attributes” (http://www.activedir.org/article.aspx?aid=92).


Las clases print-queue y volumen, tienen un atributo cada uno de tipo DN y multi-value que se llama OwnerBL, estos campos aparentemente no se usan o al menos tras algunas pruebas no he logrado ver que se usen y tampoco hay ninguna información en Internet sobre su utilidad.


Otra de las funcionalidades del AD son los display-specifiers que nos facilitan entre otras cosas la posibilidad de poder alterar las opciones contextuales de los objetos en el AD, de esta forma es posible añadir nuestras propias opciones que aparecerán en el menú que aparece al pulsar en el botón derecho del ratón sobre un objeto que represente por ejemplo a un usuario dentro de la consola de usuarios y computadores.


Para más información sobre el esquema y los display-specifiers puedes leer mi artículo sobre el tema: Si hay que editar el esquema se edita, pero editarlo para nada…..

 

La solución


La solución busca mejorar la gestión necesaria para prestar este servicio, mejorar el rendimiento que se mide en el tiempo necesario para mapear las unidades e impresoras,  simplificar y por ultimo ofrecer algún valor añadido.


La solución que propongo al problema de la asignación de impresoras y shares a los usuarios está todavía en desarrollo y pendiente de valorar las implicaciones de usar el atributo OwnerBL.


La alternativa a usar dicho atributo es extender el schema o esquema del AD, operación está a la que solo hay que tener respeto pero no fobia, pero que si se puede evitar, es mejor evitarla.


El asunto funciona así; gracias a un display-specifier (ver imagen 6), al pulsar sobre un grupo con el botón derecho del ratón dentro de la consola de users and computers, nos aparecerá dentro del menú contextual una opción nueva denominada “Unidades e impresoras” desde la cual podremos listar todos los objetos del tipo print-queue y volume que tengamos en el dominio (ver imagen 7). El administrador elegirá las impresoras y shares que quiere que mapeen los usuarios miembros de ese grupo y al salir del dialogo, la aplicación lanzada por el display-specifier guardara en los campos OwnerBL de los print-queue y volume el grupo sobre el que hayamos trabajado.


Imagen 6, Display-Specifier.



Imagen 7, Aplicación.



Obviamente tendremos que haber creado antes los objetos que representan los shares y las impresoras (ver imágenes 1,2 y 3), los shares o unidades los podremos ver desde la consola de usuarios y computadoras, las impresoras están escondidas dentro del AD, en realidad son objetos que jerárquicamente dependen del servidor en el que están (si, no te extrañes un objeto computer puede ser padre de otros objetos).


Imagen 1, Compartir una impresora y publicarla en el AD.



Imagen 2, Opciones para crear impresoras y shares en la consola de usuarios y computadoras.



Imagen 3, Una unidad en el directorio.



Podrías ver las impresoras en la consola de usuarios y computadoras, activando la opción “ver usuarios, computadoras y grupos como contenedores” (imagen 4) o a través de adsiedit puedes ver ambos casos en la Imagen 5.


Imagen 4, Ver recipientes como contenedores.



Imagen 5, Viendo las impresoras.



Finalmente un ejecutable convenientemente llamado desde el loginscript o directamente desde la GPO se encarga de mapear las unidades e impresoras, el ejecutable puede ser llamado con parámetros para indicarle si queremos que borre las impresoras o unidades ya existentes, las letras de unidad a usar para cada Share se pueden indicar en el AD dentro del objeto que haga referencia a dicho Share.


Tanto el ejecutable que usaremos en el script como el lanzado por el display-specifier los he programado en C# pero se podrían haber realizado con scripts de tipo HTA (http://dmatey.spaces.live.com/blog/cns!3B6FB47901ABC772!331.entry)


La ejecución del programa que mapea los elementos deja múltiples eventos en el eventlog de la maquina del usuario indicando las acciones que va realizando.


Queda algún pequeño detalle y más pruebas, pero cuando lo termine lo publicare en codeproject o codeplex.


 

26 comentarios en “El siempre tedioso mapeo de unidades e impresoras y una solución.”

  1. Consulta, como tengo que hacer para que me aparesca cuando hago click derecho, lo que dice “impresoras y unidades”.
    Muy bueno tu articulo, gracias.

  2. uhmm creo haberlo entendido y voy a ello pero al final no entiendo lo del script.
    Es necesario?

    gracias por compartir tus conocimientos.

    me doy cuenta que siempre sere un eterno aprendiz

  3. Muy bueno Daniel, el problema es que la parte de display-specifiers no he conseguido que funcione. Tal y como lo he entendido, el display-specifiers es para que en el menú contextual podamos poner la opción que deseemos, verdad? Pero yo lo he hecho tal y como explicas en tu artículo y no me funciona. No sé exactamente que puedo estar haciendo mal.

  4. Drug Language [url=http://www.rancidyak.com/]prednisone online[/url] It can also be used in the treatment of migraines, cluster headaches, leukemia, Hodgkin?s lymphoma, and hormone sensitive tumors. http://www.rancidyak.com/ – prednisolone without prescription

  5. Hello, Societal Effects Of Illegal Drugs http://www.greennewmedialifeexpo.com/ – klonopin sale It is indicated for certain types of seizures, akinetic seizures, specifically petit mal seizures, and myoclonus, as well as Lennox-Gastaut syndrome. [url=http://www.greennewmedialifeexpo.com/]klonopin online[/url] Also, like all other benzodiazepines, Klonopin can cause physical dependence.

  6. Drug Abuse And Lifespan Development http://www.90travels.com/ – valium drug While some patients will experience some or all of these symptoms, others will not experience anything but a relief of symptoms. [url=http://www.90travels.com/]buy valium online without prescription[/url]

  7. Aaa Drug Plans http://coopradar.com/ – order seroquel It is often prescribed off label for the treatment of many conditions such as obsessive compulsive disorder, post traumatic stress disorder, restless legs syndrome, autism, alcoholism, depression, and Tourette syndrome. [url=http://coopradar.com/]order quetiapine[/url]

  8. Benefits Of Apple Cider Tablets [url=http://www.jewelryatsartori.com/]purchase valium online[/url] The anti-anxiety medication is effective at relieving tension in patients which leads to them relaxing more easily, having fun and having a better nights sleep. http://www.jewelryatsartori.com/ – valium 5mg

  9. Alantis Diabetes Drug http://www.gogreenblog.net/ – celecoxib 200 mg Prostaglandins are also produced which have beneficial effects on the body because there are two different types of cyclo-oxygenase, referred to as COX-1 and COX-2. [url=http://www.gogreenblog.net/]purchase celebrex[/url]

Deja un comentario

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