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


Estoy intentando ejecutar el archivo .cmd que llama a un script de PowerShell desde el símbolo del sistema, y ​​obtengo el siguiente error:

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

Yo corrí set-executionpolicy unrestricted y cuando corro get-executionpolicy de PowerShell consigo unrestricted espalda.

// Salida de Powershell

PS C: \ Users \ Administrador> get-executionpolicy

Irrestricto

// Salida desde DOS

C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scr

ipts> powershell. \ Management_Install.ps1 1

ADVERTENCIA: Ejecutando PowerShell x86 ...

No se puede cargar el archivo C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scripts \ Management_Install.ps1 porque la ejecución de scripts está deshabilitada en este sistema. Consulte "get-help about_signing" para obtener más detalles.

En 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> pausa

Pulse cualquier tecla para continuar . . .

El sistema es Windows Server 2008 R2.

¿Qué estoy haciendo mal?


1280
2017-10-27 21:39


origen


Respuestas:


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

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

Set-ExecutionPolicy RemoteSigned

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


1694
2017-10-28 01:16



Puede eludir esta política agregando -ExecutionPolicy ByPass cuando ejecuta PowerShell

powershell -ExecutionPolicy ByPass -File script.ps1

541
2018-02-06 21:28



Tuve un problema similar y noté que el valor predeterminado cmd en Windows Server 2012, estaba ejecutando el x64.

por Windows 7, Windows 8, Windows Server 2008 R2 o Windows Server 2012, ejecuta los siguientes comandos como Administrador:

x86 (32 bit)
Abierto C:\Windows\SysWOW64\cmd.exe
Ejecuta el comando powershell Set-ExecutionPolicy RemoteSigned

x64 (64 bit)
Abierto C:\Windows\system32\cmd.exe
Ejecuta el comando powershell Set-ExecutionPolicy RemoteSigned

Puedes verificar el modo usando

  • En CMD: echo %PROCESSOR_ARCHITECTURE%
  • En Powershell: [Environment]::Is64BitProcess

Referencias
MSDN: políticas de ejecución de Windows PowerShell
Windows: explicación de directorio de 32 bits frente a 64 bits


108
2017-08-30 13:10



La mayoría de las respuestas existentes explican el Cómo, pero muy pocos explican el Por qué. Y antes de ejecutar el código de extraños en Internet, especialmente el código que deshabilita las medidas de seguridad, debe comprender exactamente lo que está haciendo. Así que aquí hay un poco más de detalle sobre este problema.

De la TechNet Acerca de la página de políticas de ejecución:

Las políticas de ejecución de Windows PowerShell le permiten determinar las condiciones bajo las cuales Windows PowerShell carga archivos de configuración y ejecuta scripts.

Los beneficios de los cuales, según lo enumerado por Conceptos básicos de PowerShell - Política de ejecución y firma de código, son:

  • Control de ejecución - Controlar el nivel de confianza para ejecutar scripts.
  • Command Highjack - Prevenir la inyección de comandos en mi camino.
  • Identidad - Es el script creado y firmado por un desarrollador en el que confío y / o firmado con un certificado de una autoridad certificadora en la que confío.
  • Integridad - Los scripts no pueden ser modificados por malware o usuario malicioso.

Para verificar su política de ejecución actual, puede ejecutar Get-ExecutionPolicy. Pero probablemente estés aquí porque quieres cambiarlo.

Para hacerlo, ejecutarás el Set-ExecutionPolicy cmdlet.

Tendrá que tomar dos decisiones importantes al actualizar la política de ejecución.

Tipo de política de ejecución:

  • Restricted - No se puede ejecutar ninguna secuencia de comandos local, remota o descargada en el sistema.
  • AllSigned - Todas las secuencias de comandos que se ejecutan requieren estar firmadas digitalmente.
  • RemoteSigned - Todos los scripts remotos (UNC) o descargados deben estar firmados.
  • Unrestricted - No se requiere firma para ningún tipo de script.

Alcance del nuevo cambio

  • LocalMachine - La política de ejecución afecta a todos los usuarios de la computadora.
  • CurrentUser - La política de ejecución afecta solo al usuario actual.
  • Process - La política de ejecución afecta solo al proceso actual de Windows PowerShell.

† = Por defecto

Por ejemplo: si desea cambiar la política a RemoteSigned solo por CurrentUser, ejecutará el siguiente comando:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Nota: Para cambiar la política de ejecución, debe estar ejecutándose PowerShell como Adminstrator. Si está en modo normal e intenta cambiar la política de ejecución, obtendrá el siguiente error:

Se deniega el acceso a la clave de registro 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell'. Para cambiar la política de ejecución para el alcance predeterminado (LocalMachine), inicie Windows PowerShell con la opción "Ejecutar como administrador".

Si desea ajustar las restricciones internas en sus propios scripts que no se han descargado de Internet (o al menos no contienen los metadatos de UNC), puede forzar a la política a que solo ejecute sripts firmados. Para firmar sus propios scripts, puede seguir las instrucciones del artículo de Scott Hanselman sobre Firma de scripts de PowerShell.

Nota: La mayoría de las personas es probable que obtengan este error cada vez que abren Powershell porque lo primero que PS intenta hacer cuando se inicia es ejecutar su script de perfil de usuario que configura su entorno de la forma que prefiera.

El archivo generalmente se encuentra en:

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

Puede encontrar la ubicación exacta ejecutando la variable powershell

$profile

Si no hay nada que le interese en el perfil y no quiere preocuparse por su configuración de seguridad, puede simplemente eliminarlo y PowerShell no encontrará nada que no pueda ejecutar.


90
2017-11-16 08:05



En Windows 7:

Vaya al Menú de Inicio y busque "Windows PowerShell ISE".

Haga clic con el botón derecho en la versión x86 y seleccione "Ejecutar como administrador".

En la parte superior, pega Set-ExecutionPolicy RemoteSigned; ejecutar el script Elija "Sí".

Repita estos pasos para la versión de 64 bits de Powershell ISE también (la versión no x86).

Solo estoy aclarando los pasos que insinuó @Chad Miller. Gracias Chad!


33
2017-12-04 05:25



También ejecutar este comando antes de la secuencia de comandos también resuelve el problema:

set-executionpolicy unrestricted

33
2018-03-27 06:11



Si se encuentra en un entorno en el que no es administrador, puede configurar la Política de ejecución solo para usted y no requerirá administrador.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

o

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

Puede leerlo en la entrada de ayuda.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

26
2017-11-19 19:13



RemoteSigned: se ejecutarán todos los scripts que haya creado y todos los scripts descargados de Internet deberán estar firmados por un editor de confianza.

De acuerdo, cambie la política simplemente escribiendo:

Set-ExecutionPolicy RemoteSigned

22
2017-07-20 12:37



Estoy usando Windows 10 y no pudo ejecutar ningún comando. El único comando que me dio algunas pistas fue esto:

[x64]

  1. Abra C: \ Windows \ SysWOW64 \ cmd.exe [como administrador]
  2. Ejecute el comando> powershell Set-ExecutionPolicy sin restricciones

Pero esto no funcionó. Fue limitado Probablemente nuevas políticas de seguridad para Windows10. Tuve este error:

Set-ExecutionPolicy: Windows PowerShell actualizó su política de ejecución con éxito, pero la configuración queda anulada por una política definida en un ámbito más específico. Debido a la anulación, su caparazón mantendrá su actual política de ejecución efectiva de ...

Entonces encontré otra forma (solución)

  1. Comando / consola de ejecución abierta (Ganar + R)
  2. Tipo: gpedit.msc (Política de grupo Editor)
  3. Navega a Política de la computadora local -> Configuracion de Computadora -> Plantillas Administrativas -> Componentes de Windows -> Powershell de Windows.
  4. Habilitar "Activar la ejecución de scripts"
  5. Establezca la política según sea necesario. Puse el mío a "Permitir todos los scripts".

Ahora abre PowerShell y disfruta;)


16
2017-09-01 09:32



La configuración de la política de ejecución es específica del entorno. Si está intentando ejecutar una secuencia de comandos desde la ejecución de x86 ISE debe usar PowerShell x86 para establecer la política de ejecución. Del mismo modo, si está ejecutando el ISE de 64 bits, debe establecer la política con el PowerShell de 64 bits.


9
2017-08-25 00:33