Cómo solucionar el error de PowerShell: You cannot run this script on the current system

Rubén Castro, 24 junio 2019

Si ejecutamos scripts de PowerShell, a veces, nos encontraremos con un error con un mensaje parecido a:

script.ps1 cannot be loaded. The file ruta.fichero.ps1 is not digitally signed. You cannot run this script on the current system. The script will not execute on the system.”

En realidad, se trata de un error de seguridad que se produce habitualmente cuando el script que estamos intentando ejecutar está sin firmar. Aunque hay más casos.

Este es un buen momento para asegurarnos de que el script es de fiar. Si lo es, podemos cambiar el comportamiento del sistema para que lo admita. Eso sí, ten en cuenta que estamos desactivando temporalmente una función de seguridad importante.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Este comando hace que la PowerShell actual se salte la política de ejecución. Si cerramos y volvemos a abrir la sesión de PowerShell la política de seguridad volverá a ser la predeterminada.

Si queremos conocer la execution policy actual podemos ejecutar:

Get-ExecutionPolicy

En vez de Bypass, también tenemos otros modificadores:

  • Restricted: configuración por defecto que no permite cargar ni ejecutar scripts.
  • AllSigned: requiere que todos los scripts (incluidos los creados en un ordenador local) estén firmados por un desarrollador de confianza.
  • RemoteSigned: requiere que todos los scripts y los ficheros de configuración bajados desde internet estén firmados por un desarrollador de confianza.
  • Unrestricted: permite cargar todos los ficheros de configuración y todos los scripts, pero te puede pedir confirmación antes de ejecutar los scripts no firmados bajados de internet.
  • Bypass: no se bloquea nada ni tampoco saltarán mensajes ni alarmas.
  • Undefined: restaura la “execution policy” por defecto de la sesión.

Desbloquear un fichero descargado

Lo que hemos visto arriba es una solución temporal. Cuando la política de ejecución está configurada en RemoteSigned (o más estricta), los ficheros que descargamos de internet o de emails están bloqueados (blocked) por defecto.

Si nos fiamos del contenido, lo que tenemos que hacer es desbloquearlos (unblock) ejecutando.

Unblock-File -Path C:\Downloads\script1.ps1

También podemos hacerlo de manera gráfica haciendo clic derecho encima del fichero .PS1, en propiedades y eligiendo la casilla de Desbloqueo (Unblock).

En Propiedades elegimos la casilla Unblock

Así los podremos ejecutar sin tener que cambiar temporalmente la policy.

Fuentes

  1. technet.microsoft.com
Ver más