Ejemplo de script (en aplicación de consola Delphi 6) que crea una carpeta de perfil del usuario, copia los accesos directos de un origen dado y crea un acceso directo en el escritorio del usuario para esta carpeta de perfil. Agregamos una directiva de seguridad en el AD DS (Active Directory Domain Services) de Windows Server para que ejecute el script en el inicio de sesión del usuario. Creamos un filtro WMI y lo aplicamos a la directiva para que sólo se ejecute en determinados servidores.

Código fuente en Delphi 6 de la aplicación de consola

A continuación mostramos el código fuente completo de la aplicación de consola (Console Applitacion), desarrollada en Borland Delphi 6:

Código fuente en Delphi 6 de la aplicación de consola

Que realiza las siguientes acciones:

  • Crea la carpeta de perfil del usuario en la ruta indicada del servidor. Para ello obtiene el nombre de usuario que ha iniciado sesión.
  • Copia el contenido de la carpeta «origen» indicada a la carpeta de perfil del usuario creada anteriormente.
  • Crea el acceso directo a la carpeta del perfil en el escritorio del usuario.
  • Registra un log de acceso del usuario en un fichero .ini, guardando el último servidor al que se ha conectado el usuario, las veces que se ha conectado, la fecha de último acceso. También almacenará los servideores a los que se ha conectado el usuario y el número de veces a cada servidor.

Compilaremos la aplicación anterior, que nos generará el ejecutable AccesosDirectosTS.exe:

Código fuente en Delphi 6 de la aplicación de consola

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

La finalidad del script anterior es para que se le cree al usuario un acceso directo a la carpeta del perfil con los accesos directos a las aplicación de la organización. Este proceso se realizará cuando el usuario inicie sesión en alguno de los servidores de Escritorio Remoto (antiguo Terminal Server) de Windows. Por ello crearemos una directiva GPO para que ejecute el script anterior AccesosDirectosTS.exe cuando el usuario inicie sesión.

En primer lugar copiaremos el fichero de script generado anteriormente AccesosDirectosTS.exe en la carpeta del dominio donde Microsoft recomienda colocar los scripts:

\\proyectoa.local\SysVol\proyectoa.local\Policies{68604133-2257-4EDD-AC50-523512A20A56}\User\Scripts\Logon

Esta carpeta, que puede variar según el dominio, se abre al agregar un nuevo script en la directiva. Copiaremos en esta carpeta (o en cualquier otra que consideremos) el fichero ejecutable anterior.

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Nos aseguraremos de que los usuarios tienen permiso, al menos de lectura/ejecución en la carpeta y fichero anterior.

Para crear la directiva, accederemos a alguno de los controladores de dominio y abriremos «Administración de directivas de grupo». Pulsaremos con el botón derecho del ratón sobre «Objetos de directiva de grupo» y elegiremos «Nuevo»

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Introduciremos el nombre para la directiva GPO, por ejemplo «AccesosDirectos»:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Pulsaremos con el botón derecho del ratón sobre la directiva creada «AccesosDirectos» y elegiremos «Editar»:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Accederemos a la rama de «Configuración de usuario» [1], a «Directivas» [2], a «Configuración de Windows» [3] y pulsaremos en «Scripts (inicio de sesión o cierre de sesión)» [4]. Pulsaremos con el botón derecho del ratón sobre «Iniciar sesión» y pulsaremos en «Propiedades» [4]:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

En la pestaña «Scripts» pulsaremos en «Agregar»:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Pulsaremos en «Examinar»:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Buscaremos la carpeta donde hemos copiado el script AccesosDirectosTS.exe y seleccionaremos el fichero ejecutable:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Pulsaremos «Aceptar». Desde esta ventana podremos pasarle algún parámetro, si el script lo requiere:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Pulsaremos «Aceptar» para guardar el script que se ejecutará al iniciar la sesión el usuario:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Tras crear la directiva, el último paso será vincularla a los usuarios a los que queramos que se les ejecute. Para ello seleccionaremos la Unidad Organizativa de los usuarios a los que queramos aplicar la directiva. Pulsaremos con el botón derecho del ratón sobre la Unidad Organizativa y elegiremos «Vincular un GPO existente…»:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Seleccionaremos la directiva creada «AccesosDirectos»:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Y quedará con vínculo habilitado, de forma que en cuanto un usuario inicie sesión en el equipo se ejecutará el script y hará sus funciones:

Agregar directiva de seguridad GPO en AC DC para que se ejecute el script anterior al iniciar la sesión los usuarios

Para el caso de la finalidad de este script, sólo queremos que se ejecute en el inicio de sesión de determinados servidores. Por ello deberemos aplicar un filtro WMI a la directiva, como explicamos en el siguiente punto.

Aplicar filtro WMI a directiva GPO para que sólo se aplique en determinados servidores

Para que la directiva anterior sólo se aplique a los servidores con nombre SRV1, SRV2 y SRV3, y con sistema operativo Windows Server, crearemos un filtro WMI, pulsando con el botón derecho del ratón sobre «Filtros WMI» y eligiendo «Nuevo…»:

Aplicar filtro WMI a directiva GPO para que sólo se aplique en determinados servidores

Introduciremos el nombre para el filtro WMI, por ejemplo «Servidores_Escritorio_Remoto» y pulsaremos en «Agregar»:

Aplicar filtro WMI a directiva GPO para que sólo se aplique en determinados servidores

Introduciremos la siguiente consulta WMI:

Y pulsaremos «Aceptar»:

Aplicar filtro WMI a directiva GPO para que sólo se aplique en determinados servidores

Guardaremos el filtro WMI:

Aplicar filtro WMI a directiva GPO para que sólo se aplique en determinados servidores

Y lo aplicaremos a la directiva creada anteriormente. Seleccionaremos la directiva [1] y pulsaremos en el desplegable de Filtrado WMI [2]:

Aplicar filtro WMI a directiva GPO para que sólo se aplique en determinados servidores

Elegiremos el filtro WMI creado:

Aplicar filtro WMI a directiva GPO para que sólo se aplique en determinados servidores

Pulsaremos «Sí» en el mensaje de confirmación de cambio de filtro WMI para la directiva:

Aplicar filtro WMI a directiva GPO para que sólo se aplique en determinados servidores

De esta forma la directiva sólo se aplicará en los equipos que cumplan el filtro WMI.

Resultado de ejecución del script en el escritorio del usuario

Cuando el usuario haya iniciado sesión en los servidores que cumplen el criterio del filtro WMI, se le creará, de forma automática, un acceso directo en su escritorio llamado «Accesos directos» que apunta a su carpeta de accesos directos, también creada por el script:

Resultado de ejecución del script en el escritorio del usuario

El acceso directo creado apuntará a la carpeta establecida en el script para el usuario: \\servidor\perfiles\nombre_usuario:

Resultado de ejecución del script en el escritorio del usuario

El script, además, habrá creado/actualizado el fichero de log de accesos:

Resultado de ejecución del script en el escritorio del usuario