Ejecución de scripts de inicio (inicio de sesión) de PowerShell mediante GPO

La directiva de grupo le permite ejecutar varios archivos de secuencia de comandos en el inicio / apagado de una computadora o durante el inicio / cierre de sesión del usuario. Puede usar GPO no solo para ejecutar archivos por lotes clásicos en equipos de un dominio (.bat, .cmd, .vbs), sino también para ejecutar scripts de PowerShell (.ps1) durante el inicio / apagado / inicio de sesión / cierre de sesión.

En los sistemas operativos modernos (Windows 10 / Windows Server 2016), puede configurar los scripts de inicio de sesión / inicio de PowerShell directamente desde el editor de GPO de dominio.

Antes de Windows 7 y Windows Server 2008 R2, era imposible ejecutar directamente archivos de PowerShell desde un GPO (era necesario llamar al archivo .ps1 desde el archivo por lotes .bat como parámetro del ejecutable powershell.exe).

Ejecute la consola de administración de políticas de dominio – GPMC.msc (Administración de políticas de grupo), cree una nueva política y vincúlela al contenedor de Active Directory (OU) deseado con usuarios o computadoras (puede usar filtros WMI GPO para la orientación precisa de políticas). Cambiar a política Editar modo.

Debe seleccionar una sección de GPO para ejecutar el script de PowerShell, dependiendo de cuándo desee ejecutar su script de PS1:

  • Si desea ejecutar un script PS cuando un usuario inicia sesión (cierre sesión) en una computadora (para configurar la configuración del entorno del usuario, programas, por ejemplo: desea generar automáticamente una firma de Outlook basada en las propiedades del usuario de AD, ajustar el protector de pantalla o el diseño de inicio settings), debe ir a la sección GPO: Configuración de usuario -> Políticas -> Configuración de Windows -> Scripts (inicio / cierre de sesión);
  • Si desea ejecutar el script de PowerShell en el inicio de una computadora (para deshabilitar protocolos obsoletos: NetBIOS y LLMNR, SMBv1, configurar la configuración de seguridad de la computadora, etc.) o antes de apagar la computadora, debe ir a la sección GPO con la configuración de la computadora : Configuración de la computadora -> Políticas -> Configuración de Windows -> Scripts (Inicio / Apagado).

Configuración de scripts de inicio de PowerShell con directiva de grupo

Supongamos que tenemos que ejecutar el script de PowerShell en el inicio de una computadora. Selecciona el Puesta en marcha política, y vaya a la Potencia Shell Guiones pestaña en la siguiente ventana.

ejecutar scripts de PowerShell desde GPO

Ahora necesita copiar el archivo con su secuencia de comandos de PowerShell al controlador de dominio. Haga clic en el Mostrar archivos y arrastre el archivo con el script de PowerShell (extensión ps1) a la ventana abierta del Explorador de archivos (la consola abrirá automáticamente la carpeta \yourdomainnameSysVolyourdomainnamePolicies{Your_GPO_GUID }MachineScriptsStartup de su política en el SysVol en el controlador de dominio AD más cercano).

colocando el script de PowerShell en Sysvol

Dado que configuramos el script de inicio de PowerShell, debe verificar el NTFS «Leer y ejecutar«Permisos para el Domain Computers grupo en los permisos del archivo ps1 (o verifique los permisos en toda la carpeta Machine Scripts Startup).

powershell script ntfs ejecutar permisos para equipos de dominio

Ahora haga clic en Agregar y agregue el archivo de secuencia de comandos .PS1 copiado a la lista de secuencias de comandos que se ejecutarán mediante la política de PowerShell.

configurar el script de inicio de PowerShell con GPO

Si ejecuta varios scripts de PowerShell a través de un GPO, puede controlar el orden en el que se ejecutan los scripts utilizando el Arriba abajo botones.

Para ejecutar correctamente los scripts de PowerShell durante el inicio de la computadora, debe configurar el tiempo de retraso antes de que se inicien los scripts utilizando la política en la sección Configuración del equipo -> Plantillas administrativas -> Sistema -> Política de grupo. Habilite el «Configurar el retardo de la secuencia de comandos de inicio de sesión ” política y especifique un retraso en minutos antes de iniciar los scripts de inicio de sesión (suficiente para completar la inicialización y cargar todos los servicios necesarios). Por lo general, es suficiente configurar aquí durante 1-2 minutos.

Política de retardo del script de inicio de sesión

De forma predeterminada, la configuración de seguridad de Windows no permite ejecutar scripts de PowerShell. El valor actual de la configuración de la directiva de ejecución de scripts de PowerShell se puede obtener mediante el Get-ExecutionPolicy cmdlet. Si la política no está configurada, el comando volverá Restringido (todos los scripts están bloqueados). La configuración de seguridad para ejecutar el script de PowerShell se puede configurar a través del «Activar la ejecución de script”(En la sección Configuración del equipo de GPO -> Plantillas administrativas -> Componentes de Windows -> Windows PowerShell). Posibles valores de política:

  • Permitir solo scripts firmados (AllSigned): solo puede ejecutar scripts de PowerShell firmados («¿Cómo firmar digitalmente un script de PowerShell?»): Esta es la mejor opción desde una perspectiva de seguridad;
  • Permitir secuencias de comandos locales y secuencias de comandos firmadas de forma remota (RemoteSigned): puede ejecutar cualquier script remoto local y firmado;
  • Permitir todos los scripts (sin restricciones): la opción más insegura, ya que permite ejecutar cualquier script de PowerShell.

política de ejecución de script de PowerShell

Si ninguna de las configuraciones de la política de ejecución de scripts de PowerShell es adecuada para usted, puede ejecutar scripts de PowerShell en el Derivación modo (los scripts no están bloqueados, las advertencias no aparecen).

Para hacer esto, el script de PowerShell debe ejecutarse desde el Puesta en marcha -> Guiones sección. En esta sección, puede configurar el script ps1 para que se ejecute creando el archivo por lotes de inicio habitual que ejecuta el archivo ejecutable powershell.exe (similar al script descrito en el artículo). Especificar:

  • Nombre de la secuencia de comandos: %windir%System32WindowsPowerShellv1.0powershell.exe
  • Parámetros de la secuencia de comandos: -Noninteractive -ExecutionPolicy Bypass –Noprofile -file %~dp0MyPSScript.ps1

ejecutar powershell.exe con argumentos a través de la política de grupo

El término %~dp0 cuando se inicia en el cliente, se convierte automáticamente a la ruta UNC al directorio de scripts en SYSVOL.

Como puede ver, en este caso permitió ejecutar scripts PoSh que no eran de confianza especificando el parámetro Bypass de ExecutionPolicy.

Artículos Interesantes