Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Política de Ejecución de PowerShell

Política de Ejecución de PowerShell

Mar 26, 2025

Las políticas de ejecución de PowerShell controlan las condiciones de ejecución de scripts para reducir ejecuciones accidentales o inseguras. Varían desde restrictivas (Restricted, AllSigned) hasta permisivas (Unrestricted, Bypass) y pueden aplicarse en múltiples ámbitos como Process, CurrentUser y LocalMachine. Aunque no constituyen un límite de seguridad, promueven un scripting más seguro, soportan la firma digital y pueden ser aplicadas de manera centralizada a través de Group Policy para un control organizacional consistente.

Introducción a las políticas de ejecución de PowerShell

En PowerShell, las políticas de ejecución son una característica de seguridad diseñada para controlar las condiciones bajo las cuales los scripts de PowerShell se ejecutan en un sistema. Estas políticas no son exactamente un mecanismo de seguridad, sino que están destinadas a cumplir con el siguiente propósito:

  • Evite la ejecución accidental de scripts
  • Ayude a gestionar el riesgo de ejecutar scripts de fuentes desconocidas o no confiables

Las políticas de ejecución juegan un papel importante en el aumento de la seguridad de los scripts. Actúan como una primera línea de defensa al restringir los tipos de scripts que pueden ejecutarse en un sistema. También establecen confianza para las fuentes de los scripts, como políticas como AllSigned y RemoteSigned aseguran que los scripts provienen de fuentes confiables. Esto ayuda a reducir el error humano, como en una situación en la que los usuarios podrían ejecutar sin saberlo scripts descargados de adjuntos de correo electrónico o de la web. En un contexto más amplio, las organizaciones pueden utilizar políticas de ejecución para hacer cumplir prácticas de seguridad consistentes a través de máquinas y usuarios.

Sin embargo, también debe tener en cuenta que:

  • Las políticas de ejecución no son un límite de seguridad. Pueden ser anuladas por usuarios con privilegios administrativos o evitadas mediante banderas específicas de PowerShell.
  • Su propósito principal es prevenir la ejecución accidental, no detener a actores maliciosos con intención deliberada.

Las políticas de ejecución de PowerShell deben usarse como parte de una estrategia de seguridad más amplia, incluyendo scripts firmados, repositorios seguros y otras medidas de protección.

Netwrix Auditor for Windows File Servers

Agilice el proceso de monitoreo de archivos nuevos con Netwrix Auditor for Windows File Server

Aprende más

Entendiendo las Políticas de Ejecución de PowerShell

Comencemos con cómo funcionan las políticas de ejecución en la práctica. Cuando ejecutas un script, PowerShell verifica la política de ejecución.

  • Si el script cumple con los requisitos, como estar firmado por un editor de confianza o ser de origen local, se ejecuta.
  • Si el script no cumple con los requisitos de la política, PowerShell impide su ejecución y muestra un mensaje de error.

Beneficios clave

Algunos beneficios clave de las políticas de ejecución de PowerShell son:

  • Previene la Ejecución Accidental de Scripts Maliciosos – Las políticas de ejecución reducen el riesgo de ejecutar involuntariamente scripts no confiables o dañinos, especialmente aquellos descargados de internet.
  • Fomenta prácticas de scripting seguras – Políticas como AllSigned y RemoteSigned incentivan a los autores y usuarios de scripts a firmar los scripts con certificados de confianza, asegurando su autenticidad e integridad.
  • Diferencie scripts locales vs. remotos: políticas como RemoteSigned permiten que los scripts creados localmente se ejecuten sin restricciones mientras se aplican controles más estrictos a los scripts remotos o descargados.
  • Configuración Flexible – Las políticas de ejecución se pueden aplicar en varios ámbitos (Process, CurrentUser, LocalMachine, MachinePolicy y UserPolicy), otorgando a los administradores control sobre cómo y dónde se hacen cumplir las políticas.
  • Excepciones temporales para flexibilidad – Las excepciones temporales (por ejemplo, usar -ExecutionPolicy Bypass) permiten que los scripts se ejecuten en escenarios controlados sin modificar permanentemente la configuración de seguridad del sistema.
  • Promueve el Cumplimiento Organizacional – Las políticas de ejecución pueden aplicarse en toda la organización mediante la Directiva de grupo para garantizar prácticas de seguridad consistentes en la ejecución de scripts.
  • Fomenta la conciencia sobre la seguridad de los scripts – Al requerir una acción explícita, como firmar scripts o eludir políticas, las políticas de ejecución incentivan a los usuarios a pensar críticamente sobre las fuentes de los scripts y su fiabilidad.

Principales limitaciones

Algunas limitaciones clave de las políticas de ejecución de PowerShell son:

  • Las políticas de ejecución no son un límite de seguridad ya que no están diseñadas para prevenir ataques deliberados. Un usuario con conocimientos y privilegios administrativos puede eludirlas fácilmente mediante:
  • Usando la bandera -ExecutionPolicy Bypass
  • Modificando el registro del sistema
  • Ejecutando scripts dentro de otro proceso o evitando completamente PowerShell
  • Las políticas de ejecución no analizan el contenido de los scripts. Incluso los scripts firmados pueden contener código malicioso si la clave de firma está comprometida.
  • Las políticas de ejecución tienen un alcance de protección limitado ya que solo se aplican a scripts y comandos de PowerShell. No controlan otros tipos de scripts (por ejemplo, VBScript, Python) ni archivos ejecutables, dejando brechas en la protección.
  • Las políticas estrictas como AllSigned pueden causar retrasos si los usuarios no tienen acceso a una infraestructura de firma confiable o trabajan frecuentemente con scripts sin firmar.
  • Las políticas de ejecución dependen de que los usuarios las cumplan. Los usuarios sin capacitación podrían eludir las políticas de ejecución o desactivarlas sin comprender completamente las implicaciones.
  • Múltiples ámbitos de políticas, como MachinePolicy, UserPolicy y Process, pueden crear confusión, especialmente en entornos con configuraciones mixtas o superpuestas.
  • Los scripts automatizados o las tuberías de CI/CD pueden encontrar problemas debido a políticas restrictivas, lo que requiere configuración adicional o anulaciones temporales de políticas.
  • Las políticas de ejecución pueden crear una falsa sensación de seguridad. Los administradores y usuarios podrían asumir erróneamente que son un mecanismo de seguridad robusto, cuando en realidad son principalmente una protección contra la ejecución accidental de scripts.

La siguiente tabla resume los principales beneficios y limitaciones de las políticas de ejecución de PowerShell.

Control de Ejecución de Scripts

Evita la ejecución accidental de scripts perjudiciales

Fácilmente eludido por usuarios con privilegios administrativos

Validación de origen

Fomenta la firma de scripts y fuentes confiables

No verifica el contenido de los scripts en busca de comportamientos maliciosos

Uso organizacional

Soporta la aplicación consistente a través de Group Policy

Puede obstaculizar la productividad en entornos con scripts no firmados

Flexibilidad

Permite configuraciones con alcance y anulaciones temporales

Varios ámbitos pueden resultar confusos para la gestión de políticas

Alcance de la seguridad

Añade una capa de defensa en una estrategia de seguridad

Limitado a scripts de PowerShell, dejando otras herramientas sin protección

Tipos de políticas de ejecución de PowerShell

PowerShell ofrece seis tipos de políticas de ejecución.

Restringido

Esta es la política de ejecución predeterminada en sistemas Windows. Bloquea la ejecución de todos los scripts, por lo que los administradores no pueden automatizar tareas utilizando scripts. Bajo esta política, solo se pueden ejecutar comandos individuales de manera interactiva.

Dado que esta política garantiza restricciones máximas en la ejecución de scripts, es ideal para entornos donde no se necesitan scripts.

RemoteSigned

Esta es la política de ejecución predeterminada para servidores Windows. Dicha política requiere que los scripts remotos, como los descargados de internet, estén firmados por un editor de confianza. Los scripts escritos en el ordenador local no necesitan estar firmados. En general, esta política equilibra la seguridad y la comodidad, aunque puede causar inconvenientes en algunos escenarios.

Para ejecutar un script no firmado descargado de internet, tienes que desbloquearlo, por ejemplo, utilizando el cmdlet Unblock-File.

AllSigned

Esta política se basa en certificados de confianza e infraestructura de certificados. Bajo ella, solo los scripts y archivos de configuración firmados por un editor de confianza pueden ejecutarse. Los scripts no firmados o alterados no pueden ejecutarse. Además, se solicita confirmación al usuario antes de ejecutar cualquier script, incluso si está firmado.

Esta política es la mejor para entornos con un fuerte énfasis en la integridad de los scripts y la autenticación.

Sin restricciones

Esta política permite que todos los scripts se ejecuten sin restricciones, aunque se muestran advertencias para los scripts remotos no firmados antes de la ejecución. Es la política de ejecución predeterminada para computadoras que no son Windows y no se puede cambiar.

Dado que esta política incrementa el riesgo de ejecutar scripts maliciosos o dañinos, debería limitarse a entornos de desarrollo o pruebas donde la flexibilidad se prioriza sobre la seguridad.

Bypass

Esta política permite que los scripts se ejecuten libremente, sin advertencias ni avisos. Utilice esta opción en escenarios de automatización, tuberías de CI/CD o cuando las políticas de ejecución interfieran con flujos de trabajo legítimos. Tenga en cuenta que la ausencia de protección o restricciones puede multiplicar el riesgo de ejecución accidental o maliciosa de scripts.

Indefinido

Usar esta opción elimina la política de ejecución para el ámbito actual. Si todos los ámbitos están indefinidos, la política efectiva por defecto es Restricted para clientes de Windows y RemoteSigned para Windows Server. Se utiliza para borrar los ajustes de política de ejecución de un ámbito.

Alcance de las políticas de ejecución de PowerShell

Las políticas de ejecución de PowerShell se pueden aplicar en varios ámbitos, los cuales determinan cómo y dónde se hace cumplir la política. Los ámbitos permiten a los administradores controlar el comportamiento de ejecución de scripts en diferentes niveles, como para usuarios individuales, todos los usuarios en una máquina o una sola sesión. A continuación, se discuten los diversos ámbitos.

MachinePolicy

Establecido por una Directiva de Grupo para todos los usuarios del ordenador. Esta política tiene prioridad sobre LocalMachine y CurrentUser. Para anular esta política, elimine la configuración de la Group Policy. Se utiliza para la gestión centralizada de las políticas de ejecución de scripts para todos los usuarios en una máquina.

UserPolicy

Establecido por una Directiva de Grupo para el usuario actual del ordenador. Esta política tiene prioridad sobre LocalMachine y CurrentUser. Se utiliza para la gestión centralizada de usuarios individuales dentro de un entorno de dominio. Al igual que MachinePolicy, esta política no puede ser anulada localmente.

Proceso

Se aplica solo a la sesión actual de PowerShell. La política se guarda en la variable de entorno $env:PSExecutionPolicyPreference. Cuando se cierra la sesión de PowerShell, la variable y su valor se eliminan. Por lo tanto, la política es temporal y termina cuando se cierra la sesión. Es útil para pruebas o para anular temporalmente la política del sistema sin cambios permanentes.

UsuarioActual

Se aplica únicamente al usuario actualmente conectado. Esta política se almacena en el archivo de configuración CurrentUser. Se utiliza para establecer una política para usuarios individuales sin afectar a otros usuarios en el mismo ordenador.

LocalMachine

Se aplica a todos los usuarios del ordenador. Esta política se almacena en el archivo de configuración AllUsers. Este es el ámbito predeterminado cuando no se especifica ningún ámbito. Úselo para políticas de toda la organización en máquinas compartidas o cuando varios usuarios necesiten la misma política.

Las políticas de ejecución para el usuario actual y el ordenador local se almacenan en los archivos de configuración de PowerShell. La política de ejecución para una sesión específica se almacena solo en memoria y se pierde cuando la sesión se cierra.

Precedencia de alcance

Cuando se definen múltiples políticas de ejecución en diferentes ámbitos, PowerShell utiliza el siguiente orden de precedencia para determinar cuál política es efectiva (de mayor a menor prioridad):

  1. Política de Grupo: MachinePolicy
  2. Política de Grupo: UserPolicy
  3. Política de Ejecución: Proceso
  4. Política de Ejecución: LocalMachine
  5. Política de Ejecución: CurrentUser

Recuerde lo siguiente:

  • Las configuraciones de Directiva de grupo (MachinePolicy y UserPolicy) anulan las configuraciones locales.
  • Si no se especifica un ámbito al establecer una política de ejecución, por defecto se utiliza LocalMachine.
  • Si hay una Directiva de Grupo establecida, los intentos de cambiar la política con Set-ExecutionPolicy en ámbitos inferiores fallarán.

Configuración de políticas de ejecución de PowerShell

Establecer una política de ejecución de PowerShell determina cómo se ejecutan los scripts en un sistema.

Verifique la Política de Ejecución Actual

Utilice el siguiente cmdlet para verificar la política de ejecución actual:

      Get-ExecutionPolicy
      
Image

Verificar políticas para todos los ámbitos

Utilice el siguiente cmdlet para verificar las políticas para todos los ámbitos:

      Get-ExecutionPolicy -List
      
Image

Establezca una Política de Ejecución

Utilice el cmdlet Set-ExecutionPolicy para establecer una política de ejecución para PowerShell.

Sintaxis de comando

      Set-ExecutionPolicy <PolicyName> -Scope <Scope>
      

Ejemplo 1 – Establecer una política de ejecución

Utilice el siguiente cmdlet para establecer la política en Unrestricted.

      Set-ExecutionPolicy Unrestricted
      
Image

Presione Y para continuar o L para cancelar la acción.

Ejemplo 2 – Especifique el Ámbito de la Política de Ejecución

Puede establecer la política en diferentes niveles (ámbitos). Utilice el siguiente cmdlet para configurar la política como RemoteSigned para la máquina local:

      Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
      

Tenga en cuenta lo siguiente:

  • Debe ejecutar PowerShell como administrador para establecer políticas de ejecución para el ámbito LocalMachine.
  • Si una política es aplicada por Group Policy (MachinePolicy o UserPolicy), sobrescribirá otras configuraciones, y el intento de cambiar la política resultará en un error.

Aplicar la Política de Ejecución desde un Ordenador Remoto a un Ordenador Local

Para aplicar una política de ejecución de PowerShell desde un ordenador remoto a un ordenador local, puedes utilizar una combinación de la remota de PowerShell y el cmdlet Set-ExecutionPolicy. Se hace de la siguiente manera:

      Invoke-Command -ComputerName TargetComputer -ScriptBlock {

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force

} -Credential (Get-Credential)
      

Aquí, -ComputerName especifica el ordenador objetivo. -ScriptBlock contiene el comando a ejecutar (Set-ExecutionPolicy en este caso). -Credential te permite especificar credenciales si la cuenta actual no tiene permisos en el ordenador objetivo.

Fuerce la configuración de la política

Para evitar los mensajes durante los cambios de política de ejecución, utilice el parámetro -Force.

      Set-ExecutionPolicy RemoteSigned -Force
      

Eliminar una Política de Ejecución

Para eliminar una política para un alcance específico, establezca la política en Undefined.

      Set-ExecutionPolicy Undefined -Scope CurrentUser
      

Si todos los ámbitos se establecen en Undefined, la política predeterminada se convierte en Restricted.

Omitir temporalmente las políticas de ejecución de PowerShell

Puede eludir temporalmente las políticas de ejecución al ejecutar un script en PowerShell sin cambiar permanentemente la política. Sin embargo, eludir las políticas de ejecución puede exponer su sistema a riesgos de seguridad. Asegúrese de que los scripts que está ejecutando provienen de fuentes confiables.

También tenga en cuenta que puede que se requieran privilegios administrativos para algunos comandos.

Ejemplo 1: Omitir la Política de Ejecución para un Único Script

Este comando omite la política de ejecución para esa invocación específica de PowerShell.

      powershell.exe -ExecutionPolicy Bypass -File "C:\Temp\Script.ps1"
      

Ejemplo 2: Omisión en la Sesión Actual

Puede cambiar temporalmente la política de ejecución por la duración de la sesión actual.

      Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
      

Aquí, -Scope Process asegura que el cambio se limite a la sesión actual de PowerShell. Cuando cierre la sesión, la política de ejecución volverá a su configuración original.

Ejemplo 3: Ejecutar scripts sin cambiar la política

Utilice el parámetro -Command para ejecutar directamente el script en línea.

powershell.exe -ExecutionPolicy Bypass -Command “& { . ‘C:\Temp\Script.ps1’ }”

Utilice la Directiva de Grupo para gestionar la Política de Ejecución

La configuración de directiva de grupo “Activar la ejecución de scripts” (Turn on Script Execution) te permite administrar la política de ejecución de los equipos en tu empresa. Esta configuración de Directiva de grupoanula las políticas de ejecución establecidas en PowerShell en todos los ámbitos.

  • Cuando Turn on Script Execution está desactivado, los scripts no se ejecutan. Esto es equivalente a la política de ejecución Restringida.
  • Puede habilitar Activar la ejecución de scripts y seleccionar una política de ejecución.
  • Cuando Turn on Script Execution no está configurado, no tiene efecto. La política de ejecución establecida en PowerShell es efectiva.

Gestione scripts firmados y no firmados

Un script firmado es un script de PowerShell que incluye:

  • El contenido del script
  • Una firma digital de una autoridad de certificación (CA) de confianza o un certificado autofirmado

Esto asegura que los scripts provienen de una fuente confiable y que no han sido modificados después de haber sido firmados. Los scripts firmados ayudan a mejorar la seguridad en entornos que requieren control sobre qué scripts se pueden ejecutar.

Las siguientes políticas de ejecución están relacionadas con scripts firmados:

  • AllSigned – Requiere que todos los scripts y archivos de configuración estén firmados por un editor de confianza.
  • RemoteSigned – Requiere que los scripts descargados de internet estén firmados por un editor de confianza. Los scripts locales no necesitan estar firmados.

Firmar un Script

Para firmar un script, necesitas un certificado de firma de código.

  • Puede obtener un certificado de una autoridad de certificación (CA) o generar un certificado autofirmado utilizando el cmdlet New-SelfSignedCertificate.
  • Utilice el cmdlet Set-AuthenticodeSignature para firmar el script.

Aquí está cómo puedes firmar el script.

      $cert = Get-Item Cert:\CurrentUser\My\CERT_THUMBPRINT
      
      Set-AuthenticodeSignature -FilePath "C:\Temp\Script.ps1" -Certificate $cert
      

Reemplace CERT_THUMBPRINT con la huella digital real de su certificado.

Ver estado de la firma del script

Para verificar si un script está firmado y el estado de la firma, utilice:

      Get-AuthenticodeSignature -FilePath "C:\Temp\Script.ps1"
      

Gestionar scripts no confiables o sin firmar

Para gestionar permisos para scripts sin eludir completamente las políticas, considere lo siguiente:

  • Si un script está marcado como 'de internet', desbloquéalo.
  • Cuando ejecute scripts firmados de un editor por primera vez, puede que necesite aprobar el certificado del editor. Puede agregarlo como confiable utilizando las herramientas de gestión de certificados.

Ejemplo: Desbloquear un Script

A veces, un script puede estar bloqueado debido a que se descargó de internet. Utilice el cmdlet Unblock-File para desbloquearlo sin eludir las políticas de ejecución.

      Unblock-File -Path "C:\Temp\Script.ps1"
      

Gestionar permisos de scripts

La gestión de permisos de scripts en PowerShell implica controlar qué scripts pueden ejecutarse y por quién. Esto incluye configurar políticas de ejecución, aprovechar los permisos de archivos y utilizar prácticas de firma de código.

Controlar la ejecución de scripts utilizando las políticas de ejecución de PowerShell

Las políticas de ejecución restringen las condiciones bajo las cuales se pueden ejecutar los scripts. Diferentes políticas aplican distintas restricciones. Por ejemplo, no se pueden ejecutar scripts bajo la política de Restricted.

Utilice la firma de código para scripts

Firmar scripts asegura que solo los scripts confiables puedan ejecutarse en entornos con políticas estrictas.

Utilice permisos de archivo NTFS

Restrinja el acceso a archivos de script modificando los permisos de archivos o carpetas. Aquí le mostramos cómo puede otorgar o denegar permisos.

  1. Haga clic derecho en el archivo o carpeta de script y elija Propiedades.
  2. Ve a la pestaña de Seguridad y haz clic en Editar.
  3. Agregue o elimine usuarios o grupos y asigne los permisos adecuados (por ejemplo, Leer, Escribir, Ejecutar).
  4. Denegar permisos a usuarios no autorizados para prevenir la ejecución o modificación.

Controlar permisos utilizando Group Policy

La Política de Grupo puede hacer cumplir los permisos de scripts y las políticas de ejecución en múltiples sistemas. Para configurar una política de grupo:

  1. Abra la Group Policy Management Console (GPMC).
  2. Navegue a Configuración del equipo > Plantillas administrativas > Componentes de Windows > Windows PowerShell.
  3. Establezca la política de ejecución deseada utilizando la política “Turn on Script Execution”.

Asegure scripts de fuentes de Internet

Los scripts descargados de internet se marcan como no seguros. Abra el script en un editor de texto para revisarlo en busca de seguridad antes de ejecutarlo.

Mejores prácticas para establecer políticas de ejecución

Establecer correctamente las políticas de ejecución de PowerShell es esencial para equilibrar la seguridad y la funcionalidad. Desde una perspectiva de seguridad, debes entender que las políticas de ejecución no son un límite de seguridad robusto, sino una herramienta para prevenir la ejecución accidental de scripts. Deben utilizarse junto con otras medidas de seguridad como controles de acceso, firma de scripts y protección de endpoints. En entornos empresariales, aplica políticas consistentes a través de la Directiva de Grupo y educa a los usuarios sobre las mejores prácticas para minimizar riesgos.

A continuación se presentan algunas de las mejores prácticas para configurar políticas de ejecución que equilibren la seguridad con la funcionalidad.

Utilice la política de permisos mínimos

Debe aplicar la política de ejecución Restricted o AllSigned siempre que sea posible para imponer controles más estrictos. RemoteSigned es una opción práctica para entornos que requieren cierta flexibilidad pero aún necesitan protegerse contra amenazas externas.

Evite usar el bypass de forma permanente

Utilice la política de ejecución Bypass únicamente en escenarios específicos de automatización o resolución de problemas. Vuelva a una política más estricta una vez que la tarea esté completa.

Utilice la firma digital

Firme los scripts utilizando una autoridad de certificación (CA) de confianza para asegurar la integridad y autenticidad. También debe alentar a los desarrolladores de scripts a firmar sus scripts, especialmente para su uso con la política AllSigned.

Implemente Monitoreo y Registro

Habilite el registro de actividades de PowerShell (por ejemplo, registro de bloques de scripts, registro de módulos y transcripción) para detectar y responder a actividades sospechosas.

Utilice el siguiente cmdlet para habilitar el registro del módulo:

      Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging" -Name EnableModuleLogging -Value 1
      

Los registros se pueden ver en el Visor de Eventos bajo Aplicaciones y Servicios de Registros > Microsoft > Windows > PowerShell.

También puede utilizar herramientas como Microsoft Defender for Endpoint o soluciones de SIEM para monitorear registros.

Pruebe las políticas en un entorno que no sea de producción

Para evitar sorpresas, pruebe las políticas de ejecución en un entorno controlado antes de implementarlas en toda la organización. Esto también garantizará que los scripts legítimos y los flujos de trabajo de automatización no se vean interrumpidos.

Utilice cambios de política condicionales

Para gestionar flujos de trabajo que requieren flexibilidad, modifique temporalmente las políticas utilizando el parámetro -Scope Process. El cmdlet es como sigue:

      Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
      

Considere el entorno al aplicar la política

Las políticas de ejecución de PowerShell recomendadas varían dependiendo del entorno.

  • Entorno de Desarrollo – RemoteSigned sigue siendo la política recomendada. Permite flexibilidad para que los desarrolladores ejecuten scripts locales sin firmarlos y asegura que los scripts descargados de internet estén firmados y sean confiables. También debería habilitar el registro de bloques de scripts para monitorear la ejecución de los scripts.
  • Entorno de prueba/ensayo – Utilice la política de RemoteSigned o AllSigned. RemoteSigned es práctico para probar una mezcla de scripts locales y externos con controles básicos de integridad, mientras que AllSigned impone un control más estricto al requerir que todos los scripts estén firmados.
  • Entorno de producción: Utilice la política AllSigned o Restricted. AllSigned garantiza que solo se ejecuten los scripts firmados por un editor de confianza. Sin embargo, Restricted es la opción más segura para entornos que no dependen de scripts de PowerShell. También debe aplicar políticas a través de Group Policy para asegurar la coherencia en todos los sistemas.
  • Entorno de Automatización – Bypass es la política recomendada (solo para tareas específicas). Permite que las tareas de automatización se ejecuten sin interrupciones, especialmente cuando las políticas son gestionadas por otros mecanismos, como la lista blanca de aplicaciones y las tuberías de DevOps. También debe asegurar el entorno de automatización con controles de acceso adecuados y auditorías regulares.
  • Entornos altamente seguros – La política Restricted debería ser su elección ya que impide la ejecución de cualquier script.

Solución de problemas de errores de política de ejecución

A continuación se presentan errores comunes relacionados con las políticas de ejecución de PowerShell y sus soluciones.

“La ejecución de scripts está deshabilitada en este sistema”

Puede recibir un mensaje de error como:

El archivo C:\Temp\Script.ps1 no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema.

Causa: La política de ejecución está configurada en Restringido o No definido, lo que impide la ejecución de cualquier script.

Solución: Verifique la política actual y cámbiela temporalmente para la sesión específica. Alternativamente, puede cambiar la política para el usuario o máquina actual:

Para cambiar la política para la sesión actual, utilice el siguiente cmdlet:

      Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
      

Para cambiar la política para el usuario o máquina actual, utilice el siguiente cmdlet:

      Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
      

“No se puede cargar porque el script no está firmado digitalmente”

Puede recibir un mensaje de error como:

No se puede cargar el archivo C:\Temp\Script.ps1. El archivo no está firmado digitalmente.

Causa: La política de ejecución está configurada en AllSigned o RemoteSigned, lo que requiere que los scripts estén firmados.

Solución: Utilice RemoteSigned en lugar de AllSigned si confía en los scripts locales. O puede eludir temporalmente la política.

“Se deniega el acceso a la clave del registro”

Puede recibir un mensaje de error como:

Set-ExecutionPolicy: Se deniega el acceso a la clave del registro.

Causa: No tiene los permisos suficientes para modificar la política de ejecución en el ámbito LocalMachine.

Solución: Ejecute PowerShell como administrador o establezca la política para el usuario actual utilizando el siguiente cmdlet:

      Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
      

Conflictos de Política de Ejecución Entre Ámbitos

Diferentes ámbitos (MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine) tienen políticas en conflicto.

Causa: Una política más estricta en un ámbito superior (como MachinePolicy) anula una política más permisiva en un ámbito inferior (como LocalMachine).?

Solución: Verifique las políticas para todos los ámbitos utilizando el siguiente cmdlet:

      Get-ExecutionPolicy -List
      

Una vez que tenga esta información, puede modificar la política en el ámbito apropiado o ejecutar scripts en una sesión con una política más permisiva.

“No se puede cambiar la política de ejecución porque está controlada por un Objeto de Directiva de Grupo (GPO)”

Este problema surge cuando la política de ejecución es aplicada por Group Policy, impidiendo cambios locales.

Solución: Consulte con su administrador de sistemas para modificar la Directiva de Grupo. Sin embargo, para una solución rápida, puede eludir temporalmente la política.

“Ámbito de la política no reconocido”

Puede recibir un mensaje de error como:

Set-ExecutionPolicy: El ámbito especificado no se reconoce.

Causa: Un error tipográfico en el nombre del ámbito.

Solución: Asegúrese de que el alcance esté correctamente especificado como uno de estos.

Comportamiento inesperado en diferentes versiones de PowerShell

Versiones anteriores de PowerShell, como la 2.0, manejan las políticas de ejecución de manera diferente o carecen de ciertas características.

Solución: Actualice a la última versión de PowerShell.

Scripts Marcados como Bloqueados

Puede recibir un mensaje de error como:

No se puede cargar el archivo. El archivo no está firmado digitalmente o se descargó de internet y está bloqueado.

Causa: El script está marcado como bloqueado porque se descargó de internet.

Solución: Desbloquee el script utilizando el siguiente cmdlet:

      Unblock-File -Path C:\Temp\Script.ps1
      

Conclusión: Elegir la Política de Ejecución de PowerShell adecuada

Debe tener en cuenta estos factores al elegir una política de ejecución efectiva.

  • Identifique el entorno antes de elegir una política de ejecución ya que diferentes entornos requieren una política distinta. Por ejemplo, para servidores de producción, AllSigned o RemoteSigned es lo mejor para hacer cumplir algún nivel de verificación de scripts.
  • También debería evaluar sus requisitos de seguridad y decidir en consecuencia. Por ejemplo, use AllSigned si cuenta con un proceso de firma de código robusto y desea imponer un control estricto sobre la ejecución de scripts. O use Restricted para sistemas que no deberían ejecutar scripts.
  • Considere sus necesidades de automatización. Sería más sencillo utilizar la política Bypass en entornos donde los scripts se ejecutan automáticamente por procesos confiables.
  • Por último, evalúe el origen de los scripts. Si los scripts provienen de fuentes internas y son confiables, RemoteSigned ofrece un equilibrio entre usabilidad y seguridad. Y si los scripts son una mezcla de internos y externos, considere AllSigned para una seguridad mejorada.

Preguntas frecuentes

¿Qué es la variable $env:psexecutionpolicypreference?

La variable de entorno $env:PSExecutionPolicyPreference se utiliza en PowerShell para sobrescribir temporalmente la política de ejecución para una sola sesión sin cambiar las políticas de ejecución del sistema o del usuario. Cuando cierras la sesión, se pierde el cambio.

Puede usar $env:psexecutionpolicypreference de las siguientes maneras:

  • Asigne un valor a $env:PSExecutionPolicyPreference para cambiar la política de ejecución temporalmente, como se muestra a continuación:

$env:PSExecutionPolicyPreference = “Bypass”

Después de esto, los scripts se ejecutarán sin restricciones durante la duración de la sesión.

  • Compruebe el valor actual de esta variable, como se muestra a continuación:

$env:PSExecutionPolicyPreference

  • Elimine la política temporal y vuelva al comportamiento predeterminado, como se muestra a continuación:

Remove-Item Env:PSExecutionPolicyPreference

Compartir en

Aprende más

Acerca del autor

Asset Not Found

Jonathan Blackwell

Jefe de Desarrollo de Software

Desde 2012, Jonathan Blackwell, un ingeniero e innovador, ha proporcionado liderazgo en ingeniería que ha colocado a Netwrix GroupID a la vanguardia de la gestión de grupos y usuarios para entornos de Active Directory y Azure AD. Su experiencia en desarrollo, marketing y ventas permite a Jonathan comprender completamente el mercado de Identity Management y la forma de pensar de los compradores.