La mayoría de las respuestas existentes explican el cómo , pero muy pocas explican el por qué . Y antes de comenzar a ejecutar código de extraños en Internet, especialmente el código que deshabilita las medidas de seguridad, debe comprender exactamente lo que está haciendo. Aquí hay un poco más de detalles sobre este problema.
Desde la página de TechNet Acerca de las 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 los archivos de configuración y ejecuta los scripts.
Los beneficios de los cuales, según lo enumerado por PowerShell Basics - Política de ejecución y firma de código , son:
- Control de ejecución : controle el nivel de confianza para ejecutar scripts.
- Command Highjack - Previene 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 de certificación en la que confío.
- Integridad : los scripts no pueden ser modificados por malware o usuarios malintencionados.
Para verificar su política de ejecución actual, puede ejecutar Get-ExecutionPolicy
. Pero probablemente estés aquí porque quieres cambiarlo.
Para hacerlo, ejecutará 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 deben 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.
† = Predeterminado
Por ejemplo : si desea cambiar la política a RemoteSigned solo para CurrentUser, debe ejecutar el siguiente comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Nota : para cambiar la política de ejecución, debe ejecutar PowerShell como administrador . 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 reforzar las restricciones internas en sus propios scripts que no se han descargado de Internet (o al menos no contienen los metadatos de UNC), puede obligar a la política a ejecutar solo sripts firmados. Para firmar sus propios scripts, puede seguir las instrucciones del artículo de Scott Hanselman sobre Signing PowerShell Scripts .
Nota : es probable que la mayoría de las personas reciban este error cada vez que abran Powershell porque lo primero que PS intenta hacer cuando se inicia es ejecutar el script de perfil de usuario que configura su entorno como quiera.
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 importe en el perfil y no quiera preocuparse por su configuración de seguridad, puede eliminarlo y PowerShell no encontrará nada que no pueda ejecutar.