Saltar al contenido

¿Cómo se cambia con éxito la política de ejecución y se habilita la ejecución de scripts de PowerShell?

Hacemos una verificación completa cada reseña en nuestra web con el objetivo de enseñarte siempre información con la mayor veracidad y actual.

Solución:

El mensaje de error indica que la configuración que está intentando definir a través de Set-ExecutionPolicy está anulado por una configuración en otro ámbito. Usar Get-ExecutionPolicy -List para ver qué alcance tiene qué configuración.

PS C:> Get-ExecutionPolicy -List

        Scope    ExecutionPolicy
        -----    ---------------
MachinePolicy          Undefined
   UserPolicy          Undefined
      Process          Undefined
  CurrentUser          Undefined
 LocalMachine       RemoteSigned

PS C:> Set-ExecutionPolicy Restricted -Scope Process -Force
PS C:> Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
Set-ExecutionPolicy : Windows PowerShell updated your execution policy
successfully, but the setting is overridden by a policy defined at a more
specific scope.  Due to the override, your shell will retain its current
effective execution policy of Restricted. Type "Get-ExecutionPolicy -List"
to view your execution policy settings. ...
PS C:> Get-ExecutionPolicy -List

        Scope    ExecutionPolicy
        -----    ---------------
MachinePolicy          Undefined
   UserPolicy          Undefined
      Process         RestrictedCurrentUser       Unrestricted
 LocalMachine       RemoteSigned

PS C:> .test.ps1
.test.ps1 : File C:test.ps1 cannot be loaded because running scripts is
disabled on this system. ...
PS C:> Set-ExecutionPolicy Unestricted -Scope Process -Force
PS C:> Set-ExecutionPolicy Restricted -Scope CurrentUser -Force
Set-ExecutionPolicy : Windows PowerShell updated your execution policy
successfully, but the setting is overridden by a policy defined at a more
specific scope.  Due to the override, your shell will retain its current
effective execution policy of Restricted. Type "Get-ExecutionPolicy -List"
to view your execution policy settings. ...
PS C:> Get-ExecutionPolicy -List

        Scope    ExecutionPolicy
        -----    ---------------
MachinePolicy          Undefined
   UserPolicy          Undefined
      Process       UnrestrictedCurrentUser         Restricted
 LocalMachine       RemoteSigned

PS C:> .test.ps1Hello World!

Como puede ver, ambas configuraciones se definieron a pesar del error, pero la configuración en el alcance más específico (Process) todavía tiene prioridad, ya sea para prevenir o permitir la ejecución del script.

Dado que el alcance predeterminado es LocalMachine el error puede deberse a un ajuste en el CurrentUser o Process alcance. Sin embargo, una razón más común es que la ejecución del script se configuró a través de una política de grupo (ya sea local o de dominio).

Un administrador local puede modificar una política de grupo local a través de gpedit.msc (Editor de políticas de grupo local) como se describe en esta respuesta.

Una política de grupo de dominio no puede ser reemplazada por configuraciones / políticas locales y debe ser cambiada por un administrador de dominio a través de gpmc.msc (Administración de políticas de grupo) en un controlador de dominio.

Tanto para las políticas locales como para las de dominio, la configuración se puede definir como una configuración de computadora:

Computer Configuration
`-Administrative Templates
  `-Windows Components
    `-Windows PowerShell -> Turn on Script Execution

o como configuración de usuario:

User Configuration
`-Administrative Templates
  `-Windows Components
    `-Windows PowerShell -> Turn on Script Execution

Los primeros se aplican a objetos informáticos, mientras que los segundos se aplican a objetos de usuario. En el caso de las políticas locales, no existe una diferencia significativa entre las políticas de usuario y de computadora, porque las políticas de usuario se aplican automáticamente a todos los usuarios de la computadora.

Una póliza puede tener uno de tres estados (o cinco estados si cuenta las 3 configuraciones disponibles para el estado Activado por separado):

  • No configurado: la política no controla la ejecución del script de PowerShell.
  • Activado: permite la ejecución del script de PowerShell.
    • Permitir solo scripts firmados: permitir la ejecución de scripts firmados solamente (igual que Set-ExecutionPolicy AllSigned).
    • Permitir secuencias de comandos locales y secuencias de comandos firmadas de forma remota: permite la ejecución de todos los scripts locales (firmados o no) y de los scripts firmados desde ubicaciones remotas (igual que Set-ExecutionPolicy RemoteSigned).
    • Permitir todos los scripts: permite la ejecución de scripts locales y remotos independientemente de si están firmados o no (igual que Set-ExecutionPolicy Unrestricted).
  • Discapacitado: no permite la ejecución del script de PowerShell (igual que Set-ExecutionPolicy Restricted).

Cambios realizados a través de Set-ExecutionPolicy solo se vuelven efectivas cuando las políticas locales y de dominio están configuradas para No configurado (política de ejecución Undefined en los alcances MachinePolicy y UserPolicy).

El problema es que Windows no permite que todos los scripts se ejecuten en Unrestricted modo. En realidad, independientemente de la política de ejecución de su usuario (incluso si es administrador), Local Group Policy tendrá prioridad.

Y, de forma predeterminada, la política de ejecución de secuencias de comandos del grupo local es tal que no se permite la ejecución de secuencias de comandos. ¡Necesitamos cambiarlo!

Cambio de la política de ejecución del grupo local

Hacemos esto a través del Local Group Policy Editor a la que puede acceder buscando en la barra de búsqueda de Windows “política de grupo”. O haz esto:

  1. Abra la Consola de administración presionando Win + r y escribiendo comando mmc.
  2. Ir a File -> Add Remove Snap In....
  3. En el panel izquierdo, busque Group Policy Object Editor y agréguelo.
  4. Cierra el formulario.

Luego, en el panel izquierdo, se puede expandir el editor de grupos. Expanda y navegue hasta Computer Configuration -> Administrative Templates -> Windows Components.

ingrese la descripción de la imagen aquí

Entonces a Windows PowerShell.

ingrese la descripción de la imagen aquí

Así que selecciona Turn on Script Execution. Cambiar configuración a Enabled y especificar Allow all scripts en Execution Policy.

ingrese la descripción de la imagen aquí

Confirma presionando Ok y cierre la Consola de administración.

Ahora hay una revisión disponible para instalar:

2.8.7 para VS 2013: https://github.com/NuGet/Home/releases/download/2.8.7/NuGet.Tools.vsix

3.1.1 para VS 2015: https://github.com/NuGet/Home/releases/download/3.1.1/NuGet.Tools.vsix

https://github.com/NuGet/Home/issues/974

Te mostramos comentarios y valoraciones

Si conservas algún titubeo y disposición de desarrollar nuestro post eres capaz de realizar un paráfrasis y con gusto lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *