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
).
- Permitir solo scripts firmados: permitir la ejecución de scripts firmados solamente (igual que
- 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:
- Abra la Consola de administración presionando
Win + r
y escribiendo comandommc
. - Ir a
File -> Add Remove Snap In...
. - En el panel izquierdo, busque
Group Policy Object Editor
y agréguelo. - 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
.
Entonces a Windows PowerShell
.
Así que selecciona Turn on Script Execution
. Cambiar configuración a Enabled
y especificar Allow all scripts
en Execution Policy
.
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.