PowerShell dice "la ejecución de scripts está deshabilitada en este sistema."

Estoy intentando ejecutar un archivo [tag:cmd] que llama a un script [tag:powershell] desde cmd.exe, y estoy obteniendo el siguiente error:

No se puede cargar Management_Install.ps1 porque la ejecución de scripts está deshabilitada en este sistema.

He ejecutado

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

y cuando ejecuto Get-ExecutionPolicy desde [tag:powershell], me devuelve Unrestricted.

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

El archivo C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1 no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema. Por favor, consulte "get-help about_signing`" para más detalles.

En la línea:1 char:25

  • .\Management_Install.ps1 <<< 1
  • CategoryInfo : NotSpecified: (:) [], PSSecurityException
  • FullyQualifiedErrorId : RuntimeException
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

El sistema es Windows Server 2008R2.

¿Qué estoy haciendo mal?

Solución

Si estás usando Windows Server 2008 R2 entonces hay una versión x64 y x86 de PowerShell, ambas tienen que tener sus políticas de ejecución establecidas. ¿Ha configurado la política de ejecución en ambos hosts?

Como Administrador, puede establecer la política de ejecución escribiendo esto en su ventana de PowerShell:

Set-ExecutionPolicy RemoteSigned

Para obtener más información, consulte Uso del cmdlet Set-ExecutionPolicy.

Comentarios (6)

Puede saltarse esta política añadiendo -ExecutionPolicy ByPass al ejecutar PowerShell

powershell -ExecutionPolicy ByPass -File script.ps1
Comentarios (5)

RemoteSigned: se ejecutarán todos los scripts que hayas creado tú mismo, y todos los scripts descargados de Internet deberán estar firmados por un editor de confianza.

Bien, cambie la política simplemente escribiendo:

Set-ExecutionPolicy RemoteSigned
Comentarios (1)