Al hacer doble clic en un archivo .ps1 o al ejecutarlo desde la consola de PowerShell, Windows responde con el mensaje «La ejecución de scripts está deshabilitada en este sistema». Es la protección que viene activada de fábrica: la directiva de ejecución está en Restricted, así que ningún archivo de script puede arrancar. Lo más probable es que baste con permitir solo los scripts que escribas o descargues de fuentes de confianza con Set-ExecutionPolicy -Scope CurrentUser RemoteSigned. Aplica a Windows 10 y Windows 11. Datos comprobados en octubre de 2026.
Por qué PowerShell bloquea los scripts .ps1 al ejecutarlos
Windows trae, por defecto, la directiva de ejecución de PowerShell en Restricted. Esa directiva es una medida de seguridad: le dice a PowerShell que no debe cargar ni ejecutar ningún archivo .ps1, así un script descargado de Internet no puede arrancar sin que tú lo permitas. Cuando escribes la ruta del script en la consola, PowerShell lee la directiva, ve que está en Restricted y devuelve el aviso que ves en pantalla.
La directiva se cambia con el cmdlet Set-ExecutionPolicy. Los valores útiles son RemoteSigned (scripts locales sí, los descargados de Internet solo si están firmados por un editor de confianza), AllSigned (todos deben ir firmados) y Unrestricted (sin restricción, no recomendado). El ajuste se guarda en el Registro y se aplica al instante.
Lo que ves y por qué pasa
| Lo que ves | Causa probable | Dónde se arregla |
|---|---|---|
«La ejecución de scripts está deshabilitada en este sistema» al ejecutar el .ps1 |
La directiva está en Restricted y no la has cambiado todavía |
Permitir solo tus scripts sin tocar todo el sistema |
Mismo mensaje aunque ya has hecho Set-ExecutionPolicy RemoteSigned |
Lo has ejecutado sin permisos de administrador en la consola normal o la GPO de la empresa lo bloquea | Cómo abrir PowerShell con los permisos adecuados / La directiva de la empresa manda |
«El archivo no está firmado digitalmente» sobre un .ps1 descargado de Internet |
La directiva es RemoteSigned y el archivo conserva la marca de «descargado de la web» |
Permitir solo tus scripts sin tocar todo el sistema |
Al hacer doble clic sobre el .ps1 se abre el Bloc de notas y el script no corre |
PowerShell no ejecuta scripts con doble clic; .ps1 queda asociado a un editor |
Ejecutar un script puntual sin cambiar la directiva |
Antivirus o SmartScreen pone en cuarentena el .ps1 aunque la directiva esté bien |
El archivo no está firmado o el editor no es de confianza para el antivirus | Si nada funciona al ejecutar el script |
Cómo abrir PowerShell con los permisos adecuados
Antes de cambiar nada, conviene saber qué directiva tienes ahora y desde dónde se aplica. La consola «normal» lee la directiva del usuario actual; la consola abierta como administrador puede cambiar la directiva del equipo, pero en equipos del trabajo la directiva puede venir impuesta por la empresa y no podrás moverla.
- Abre PowerShell como administrador: en Windows 11, haz clic derecho en el botón de Inicio (Win+X) y elige Terminal (Administrador); en Windows 10, abre el menú Inicio, busca Símbolo del sistema o Windows PowerShell, clic derecho y Ejecutar como administrador. Confirma el cuadro de Control de cuentas de usuario.
- En la consola, ejecuta
Get-ExecutionPolicy -Listpara ver las directivas por ámbito (MachinePolicy,UserPolicy,Process,CurrentUser,LocalMachine) y qué valor tiene cada una. - La directiva efectiva es la más restrictiva de las que estén fijadas: si
MachinePolicyoUserPolicyaparecen rellenas, las manda una GPO y tuSet-ExecutionPolicyno hará efecto.
LocalMachine : Restricted y los demás Undefined, estás ante el caso normal: con un Set-ExecutionPolicy en tu usuario basta.Permitir solo tus scripts sin tocar todo el sistema
Para un equipo personal, lo más limpio es permitir solo los scripts locales (los que tú escribes) y los descargados que estén firmados por un editor de confianza. Eso lo consigues con RemoteSigned en el ámbito del usuario actual, sin necesidad de abrir la consola como administrador. Si tu script viene de Internet, además de la directiva necesitarás «desbloquearlo» para que Windows le quite la marca de archivo descargado.
Cambia la directiva solo para tu usuario
Abre PowerShell (consola normal, no hace falta administrador) y ejecuta:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
PowerShell te preguntará si quieres cambiar la directiva. Pulsa S y Enter. Después comprueba con Get-ExecutionPolicy -List que en la fila CurrentUser ahora aparece RemoteSigned.
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Undefined
.ps1. Si arranca y muestra su salida, está resuelto. Si sigue dando el mismo mensaje, ve a «La directiva de la empresa manda».Desbloquea el archivo descargado
Cuando un .ps1 viene de Internet (descarga del navegador, adjunto, etc.), Windows le pone una marca de origen (Zone.Identifier) y, con RemoteSigned, exige firma. Tienes dos caminos:
- Desde el Explorador de archivos: clic derecho en el
.ps1> Propiedades > en la pestaña General, abajo, marca Desbloquear > Aceptar. - Desde PowerShell: ejecuta
Unblock-File -Path "C:\ruta\script.ps1"(la ruta, entre comillas).
Unblock-File no cambia la directiva: solo le quita la marca al archivo concreto. Si tu directiva sigue en Restricted, el script seguirá sin ejecutarse.Ejecutar un script puntual sin cambiar la directiva
Si solo necesitas correr un script una vez y no quieres cambiar la directiva de tu usuario, PowerShell admite el parámetro -ExecutionPolicy Bypass para esa sola ejecución. Es el camino rápido para probar algo o para lanzar scripts desde un acceso directo sin dejar la directiva relajada en el sistema.
- Pulsa Win+R, escribe
powershell -ExecutionPolicy Bypass -File "C:\ruta\script.ps1"y pulsa Enter. Cambia la ruta por la de tu script. - Si prefieres desde el Explorador de archivos: clic derecho en el
.ps1> Ejecutar con PowerShell (disponible en Windows 10 y Windows 11 desde PowerShell 3.0).
powershell -ExecutionPolicy Bypass -File "C:\ruta\script.ps1"
-ExecutionPolicy Bypass desactiva la protección solo para esa ejecución. Úsalo con scripts de los que conozcas el origen; no lo conviertas en atajo habitual para scripts descargados sin verificar.La directiva de la empresa manda: scripts bloqueados en un equipo del trabajo
En equipos gestionados por una organización, la directiva de ejecución puede venir fijada por una Directiva de grupo (GPO). En ese caso, MachinePolicy o UserPolicy aparecen rellenas en Get-ExecutionPolicy -List y tus cambios con Set-ExecutionPolicy se ignoran o se revierten al cerrar la consola. La forma correcta de verlo es la herramienta de directivas del propio Windows.
- Pulsa Win+R, escribe
gpedit.mscy pulsa Enter. Si Windows es Home, esta herramienta no está: pide al administrador de tu organización que ajuste la GPO. - Ve a Directiva de equipo local > Configuración del equipo > Plantillas administrativas > Componentes de Windows > Windows PowerShell > Activar la ejecución de scripts.
- Si la directiva está habilitada, mira qué directiva de ejecución ha elegido el administrador (
Allow only signed scripts,Allow local scripts and remote signed scripts, etc.). No la cambies sin autorización: en un equipo del trabajo, saltarse la GPO puede saltarse también el antivirus o el control de aplicaciones.
Comprueba si hay una GPO activa
gpedit.msc solo está en Windows Pro, Enterprise y Education. Si tu equipo es Home o no tienes acceso a la directiva, mira el Registro y el resultado de directivas (RSoP):
- Pulsa Win+R, escribe
rsop.mscy revisa Configuración del equipo > Plantillas administrativas > Componentes de Windows > Windows PowerShell. - Para verlo de forma directa, abre el Editor del Registro (Win+R >
regedit) y comprueba el valorExecutionPolicyen la claveHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell. Si ahí diceRemoteSignedy tu consola lo aplica, esa es la directiva real.
rsop.msc o en el Registro ves una directiva fijada por la empresa, tu única salida legalmente es contactar con el administrador de sistemas para que autorice tu script o cambie la GPO.Si nada funciona al ejecutar el script
Si ya cambiaste la directiva, desbloqueaste el archivo y aun así el script no corre (o se cierra sin hacer nada), el problema puede estar en la propia firma del archivo, en el antivirus o en la asociación de la extensión .ps1 con otro programa. Haz estas comprobaciones en este orden:
- Firma del script: ejecuta
Get-AuthenticodeSignature "C:\ruta\script.ps1". Si el resultado diceNotSigned, tu.ps1no está firmado: conAllSignedno correrá, y conRemoteSignedsolo si es local y está desbloqueado. - Antivirus o SmartScreen: revisa el historial de protección en Seguridad de Windows > Historial de protección. Si el archivo aparece como puesto en cuarentena, restáuralo y añade la carpeta a las exclusiones solo si confías en el origen.
- Asociación de
.ps1: ejecutaGet-Command powershell.exepara confirmar la ruta de PowerShell. En el Explorador, clic derecho en el.ps1> Abrir con > confirma que abre con Windows PowerShell o Windows Terminal, no con el Bloc de notas.
Get-AuthenticodeSignature "C:\ruta\script.ps1"
Lo que ya descartaste del error de scripts deshabilitados
- La directiva aplicada al usuario o al equipo.
- El desbloqueo del archivo descargado.
- Los permisos de la consola de PowerShell (administrador cuando haga falta).
- El bloqueo por GPO de la empresa o por el antivirus.
Fuentes
- Github600+ free PowerShell scripts (.ps1) for Linux, macOS, and Windows.consultado el 16/10/2026
- Microsoft«La ejecución de scripts está deshabilitada en este sistema» (PowerShell) — documentación oficialconsultado el 16/10/2026
- MicrosoftVista web heredada Aplicaciones de Windows 8/8.1/UWP HTML/JavaScript (también conocidas como aplicaciones web hospedadas y aplicaciones web de Windows) Aplicaciones progresivas heredadas de Web Apps (PWA) Microsoft Edge (EdgeHTML) heredado DevTools (en desuso en Windows) — documentación oficialconsultado el 16/10/2026
- MicrosoftERROR_TOO_MANY_DESCRIPTORS (error 331, 0x14B) — documentación oficialconsultado el 16/10/2026
- MicrosoftERROR_INVALID_LDT_DESCRIPTOR (error 564, 0x234) — documentación oficialconsultado el 16/10/2026