Icono del sitio RDR-IT

GPO: Ejecutar script de PowerShell al iniciar sesión

En este tutorial, le mostraré cómo ejecutar un script de PowerShell al iniciar sesión el usuario utilizando la Política de grupo (GPO) en un entorno de Active Directory.

Antes de comenzar este tutorial, tenga en cuenta lo siguiente al ejecutar scripts al iniciar sesión:

En este tutorial utilizaré un script bastante simple, simplemente creará una entrada en el Visor de eventos de Windows.

Antes de implementar un script de PowerShell mediante una política de grupo, asegúrese de que funcione correctamente con pruebas locales y, antes de implementarlo a gran escala, también realice pruebas de la política de grupo en una unidad organizativa de prueba, por ejemplo.

Ejecutar un script de PowerShell al iniciar sesión a través de la Política de grupo

Antes de crear la política de grupo, copie el script al servidor.

Desde la consola de administración de políticas de grupo, haga clic con el botón derecho en Objetos de política de grupo y haga clic en Nuevo 1.

Nombra la política de grupo 1 y haz clic en Aceptar 2 para crearla.

Se crea el GPO, haga clic derecho sobre él y haga clic en Editar 1.

Vaya a la siguiente ubicación: Configuración de usuario / Políticas / Configuración de Windows / Scripting (inicio de sesión y cierre de sesión), haga doble clic en Inicio de sesión 1 para acceder a las propiedades.

Vaya a la pestaña Scripts de PowerShell 1 y haga clic en Mostrar archivos 2.

En la ventana del Explorador de archivos que se abre, copie el script de PowerShell.

Cierre la ventana del Explorador de archivos y regrese a la ventana Propiedades, luego haga clic en el botón Agregar 1.

En la nueva ventana Agregar script, haga clic en el botón Examinar 1.

Seleccione el archivo de script de PowerShell 1 y luego haga clic en el botón Abrir 2.

Se selecciona el script de PowerShell que se va a agregar, haga clic en Aceptar 1.

El script de PowerShell se agrega al script de inicio de sesión, es posible agregar varios scripts si lo desea, para ello repita la operación, personalmente prefiero hacer varias GPO, esto es más fácil de mantener en el tiempo y sobre todo si desea detener la aplicación de un script temporalmente, solo debe desactivar la política de grupo.

Haga clic en los botones Aplicar 1 y Aceptar 2.

Ahora cierre el Editor de políticas de grupo.

La GPO está lista.

Ahora necesitamos vincular la Política de Grupo a la ubicación deseada en el árbol de dominio de Active Directory, en este momento está en el contenedor de Objetos de Política de Grupo que es la «biblioteca» de todos los GPO.

Haga clic con el botón derecho en la ubicación deseada y haga clic en Vincular un objeto de política de grupo existente 1.

Aquí vincularé el GPO a la OU Usuarios para que el script se aplique a todos los usuarios en esa OU.

En la lista, seleccione GPO 1 y haga clic en Aceptar 2.

Probar la directiva de grupo y la ejecución de scripts de PowerShell

Aquí abriré la sesión del usuario Iron MAN (iron.man).

Esta es la página de inicio de sesión con el usuario Iron MAN.

En el Visor de eventos de Windows, puedo encontrar la entrada creada por el script de PowerShell.


Ahora ya sabe cómo ejecutar un script de PowerShell al iniciar sesión mediante la Política de grupo.

Con experiencia, aquí hay algunos consejos adicionales:

Con PowerShell es posible ejecutar scripts remotos que serán descargados en https, aquí es donde Gitlab tomará todo su interés al alojar los scripts en él, lo que permitirá tener una gestión centralizada de los scripts de PowerShell y beneficiarse del versionado. La otra ventaja es la actualización casi instantánea del script, no hay necesidad de esperar la replicación de la carpeta sysvol.

Aquí le mostramos cómo hacerlo: primero recupere la URL del script de PowerShell en formato sin procesar.

Cree un script de PowerShell para la política de grupo con el siguiente código:

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://git.uri/-/snippets/xx/raw/main/ScriptPSOnLogin.ps1'))

ou mais moins sécurisé :

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://git.uri/-/snippets/xx/raw/main/ScriptPSOnLogin.ps1'))

El uso de Gitlab no impide la firma de scripts de PowerShell.

Salir de la versión móvil