Hola, soy Francisco, del equipo de soporte a Sistema Operativo. Hoy vamos a ver cómo poder ejecutar scripts no firmados en PowerShell.

En alguna ocasión crearemos algún script en Powershell y a la hora de ejecutar nos puede salir un mensaje como este:

     PS C:\Windows\system32> C:\TOOLS\SPLITTEXT.PS1

     No se puede cargar el archivo C:\TOOLS\SPLITTEXT.PS1. El archivo C:\TOOLS\SPLITTEXT.PS1 no está firmado digitalmente.

El sistema operativo para protegernos de la ejecución de código malicioso impedirá en primera instancia la ejecución de cualquier script.

Para verificar como está configurado el sistema operativo en lo que se refiere a la directiva de ejecución de script, escribir este comando:

     Get-ExecutionPolicy

Pero si realmente necesitamos ejecutar el script  porque nosotros somos los creadores, podemos permitir  temporalmente permitir la ejecución  con el comando (habiendo iniciado powershell como administrador)

     Set-ExecutionPolicy  RemoteSigned

     [S] Sí  [N] No  [U] Suspender  [?] Ayuda (el valor predeterminado es "S"): s

     (Este comando permitirá los script en la maquina local)

Si queremos permitir la ejecución de todos aunque no estén en local:

     Set-ExecutionPolicy  Unrestricted

     [S] Sí  [N] No  [U] Suspender  [?] Ayuda (el valor predeterminado es "S"): s

Y si finalmente queremos dejar como estaba en un principio (o para no permitir la ejecución de nada que este firmado)

     Set-ExecutionPolicy  AllSigned

     [S] Sí  [N] No  [U] Suspender  [?] Ayuda (el valor predeterminado es "S"): s

Si estamos interesados en conocer como firmar nuestros scripts consultar:

     Get-Help About_Signing

Un saludo,

- Francisco Fraile Cortijo