Descubre cómo desplegar un GPO Script con código de PowerShell para poder realizar distintas configuraciones en tu infraestructura basada en AD DS Server.
Las directivas de grupo, también conocidas como GPO, explicado de manera muy coloquial, son un conjunto de reglas que se establecen dentro de un dominio de Active Directory y que se ejecutan en los distintos sistemas que hacen uso de este servicio, aplicándose sobre usuarios y equipos y determinando que puede hacer un usuario, que software puede instalar o usar, a que recursos puede acceder, etc.
¿Cómo desplegar un GPO Script con código de PowerShell?
Pre-requisitos y recomendaciones:
Para completar de forma satisfactoria este tutorial y poder desplegar un GPO Script con código de PowerShell será necesario:
- Estar dado de alta en la Plataforma y estar registrado en la misma tras hacer Log-in.
- Tener una máquina Windows Server con AD DS Server instalado.
- Una cuenta con permisos de administrador.
Paso 1. Preparación del código a ejecutar
En este caso, vamos a ver cómo podemos desplegar una GPO que ejecute un código de PowerShell, haciendo uso de lo que comúnmente se llama GPO Script.
Lo primero que se debe hacer es preparar el código de PowerShell que se quiere ejecutar. Para este artículo y a modo de demostración se va a hacer un script que permita mapear un recurso de red a los usuarios que inicien sesión, pero realmente, este método se puede extrapolar para muchos otros procedimientos como mapear impresoras, desplegar software, crear copias de seguridad, etc.
Para mapear una unidad de red mediante PowerShell, se puede usar el comando “New-PSDrive” cuya sintaxis se puede ver desarrollada en este enlace a Microsoft Learn.
En este caso, se usará una versión simple como se muestra en la siguiente línea:
New-PSDrive –Name “P” –PSProvider FileSystem –Root “\\SW2022NACHO01\Compartido” –Persist
Donde:
- Name: Indica el nombre de unidad (una letra) por el que podrá identificarse en el sistema.
- Root: Indica la ruta raíz del recurso mapeado.
- Persist: Indica que es remanente a reinicios.
Paso 1. Probamos el script para que no haya problemas
Una vez se tenga el comando, comandos o script de PowerShell que se quiere utilizar, se deberá preparar la ejecución, y se deberá hacer de la misma forma en la que se preparaban los ficheros de ejecución por lotes clásicos que tenían extensiones como “.bat”, “.cmd”, “.vbs”, que en el caso de los scripts de PowerShell es la extensión “.ps1”.
Paso 2. Preparar la política para su ejecución
En este momento se debe lanzar la consola de administración de políticas de grupo de dominio, también llamada muchas veces “GPMC” por sus siglas en inglés y cuyo ejecutable es “GPMC.msc”. Esta consola deberá lanzarse con privilegios de administrador. Esta consola también se puede lanzar desde la sección de herramientas del Administrador del Servidor.
Paso 2. Lanzamos la consola de GPMC desde el menú de herramientas del administrador del servidor
Una vez arrancada la consola, se debe hacer clic con el botón derecho sobre el nombre de dominio y seleccionar la opción de “Crear una GPO en este dominio y vincularlo aquí”.
Paso 2. Seleccionamos la opción de Crear una GPO en este dominio y vincularlo aquí
En este momento se mostrará una ventana emergente en la que se deberá dar nombre a la nueva GPO.
Paso 2. Proporcionamos un nombre a la nueva GPO
En este punto se habrá cambiado al “Administrador de directivas de grupo”. Se debe buscar la GPO que acabamos de crear, hacer clic en el botón derecho sobre la GPO y seleccionar la opción “Editar”.
Paso 2. Editamos la GPO que acabamos de crear
Con esto se mostrará el editor de la GPO, pero sin haber elegido ninguna ruta, ya que aterrizará en una zona neutral.
Paso 2. Vista general del editor de GPO
En este momento se debe pensar en qué tipo de implementación de GPO queremos realizar.
Podemos optar por una de estas dos opciones, en función de si se va a aplicar sobre el equipo o el usuario:
- Iniciar y apagar equipo: Para lanzar el script de PowerShell al iniciar o apagar el equipo, se debe ir a “Configuración del equipo > Directivas > Configuración de Windows > Scripts (Inicio o apagado)”.
- Iniciar y cerrar la sesión: Para lanzar el script de PowerShell al iniciar o cerrar la sesión de usuario, se debe ir a “Configuración de usuario > Directivas > Configuración de Windows > Scripts (inicio y cierre de sesión)”.
En nuestro caso, lo vamos a lanzar durante el inicio de la sesión de usuario por lo que tomaremos la segunda opción, desplegando por ello toda la ruta para a continuación seleccionar la opción “Iniciar sesión”, hacer clic sobre ella con el botón derecho y seleccionar propiedades y a continuación ir a la pestaña “Scripts de PowerShell”.
Paso 2. Accedemos a la ruta de inicio de sesión y seleccionamos scripts de PowerShell
Por último, le damos a “Agregar”, buscamos la ruta donde se guarda el script que hemos creado previamente y lo seleccionamos.
Paso 2. Cargamos el script para su ejecución
Con esto, el script y la GPO deberían estar en funcionamiento. Para comprobarlo se puede ir al Administrador de directivas de grupo, buscar la GPO que se ha creado al principio, ver su estado y si se puede ver vinculado el script.
Paso 2. Comprobamos que la GPO del script está activo
Conclusiones
Tal como se puede ver en este tutorial, se pueden preparar políticas de grupo (GPO) que lancen comandos o scripts de PowerShell o de otro tipo de código para desencadenar acciones sobre los objetos de nuestro dominio (Usuarios, grupos, Equipos) de manera sencilla siguiendo la formula descrita más arriba.
Para completar esta información, recomendamos que visites los siguientes enlaces, donde podrás ver información adicional y algunos ejemplos de operativas que se pueden realizar en base a directivas de grupo, como, por ejemplo:
- Qué son y para qué sirven las GPO
- Comandos de PowerShell para gestionar GPO Script
- Como configurar una GPO para el mapeo de unidades compartidas
- Como configurar GPO para mapeo de impresoras
- Como configurar unidades personales mediante GPO script
- Como configurar tu firewall mediante GPO script
- Cómo ocultar el acceso a una unidad de disco dentro de tu servidor a través del editor de políticas locales
¡Gracias por acompañarnos!