En entornos Windows, PowerShell es una herramienta esencial para automatización, administración y despliegue. Sin embargo, muchas veces nos encontramos con restricciones impuestas por la política de ejecución (ExecutionPolicy), que impide ejecutar scripts .ps1 no firmados o descargados de fuentes externas.
Este artículo explica cómo utilizar el comando powershell.exe -ExecutionPolicy Bypass -File .\script.ps1 para ejecutar scripts legítimos sin modificar la configuración global del sistema.
¿Qué es ExecutionPolicy?
ExecutionPolicy es una medida de seguridad que define qué scripts pueden ejecutarse en PowerShell. Los niveles más comunes son:
Restricted: No permite ejecutar ningún script.RemoteSigned: Scripts locales permitidos; los remotos requieren firma.AllSigned: Solo se ejecutan scripts firmados por un editor de confianza.Unrestricted: Permite todos los scripts, con advertencias.Bypass: Omite todas las restricciones sin mostrar advertencias.
Uso del comando
powershell.exe -ExecutionPolicy Bypass -File .\script.ps1
¿Qué hace?
powershell.exe: Llama al intérprete de PowerShell.-ExecutionPolicy Bypass: Ignora temporalmente la política de ejecución.-File .\script.ps1: Ejecuta el script especificado.
Este comando permite ejecutar el script sin modificar la política de ejecución del sistema ni requerir privilegios elevados. Es ideal para entornos donde no se puede cambiar la configuración global o para despliegues automatizados.
Ventajas
- Temporal: No altera la configuración permanente del sistema.
- Seguro: Útil para ejecutar scripts legítimos en entornos controlados.
- Compatible: Funciona en PowerShell 2.0 en adelante.
Consideraciones
- Este método no evita bloqueos por AppLocker, antivirus o EDR.
- Asegúrate de que el script provenga de una fuente confiable.
- No se recomienda para entornos donde se requiere trazabilidad o firma digital.
Ejemplo práctico
Supongamos que tienes un script de mantenimiento llamado limpieza.ps1. Para ejecutarlo sin restricciones:
powershell.exe -ExecutionPolicy Bypass -File .\limpieza.ps1
Puedes incluir este comando en tareas programadas, scripts de despliegue o accesos directos.
