in

Windows Server 2008 R2: PowerShell dice que «la ejecución de scripts está deshabilitada en este sistema».

apple touch icon@2

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

De 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, enumerados por Conceptos básicos de PowerShell: directiva de ejecución y firma de código, están:

  • Control de ejecución – Controlar el nivel de confianza para ejecutar scripts.
  • Comando Highjack – Evitar la inyección de comandos en mi camino.
  • Identidad – ¿El script es creado y firmado por un desarrollador en quien 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 ningún script local, remoto o descargado en el sistema.
  • AllSigned – Todos los scripts que se ejecutan deben estar firmados digitalmente.
  • RemoteSigned – Todos los scripts remotos (UNC) o descargados deben estar firmados.
  • Unrestricted – No se requiere firma para ningún tipo de guión.

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 estar ejecutando 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 UNC), puede forzar la política para que solo ejecute sripts firmados. Para firmar sus propios guiones, puede seguir las instrucciones del artículo de Scott Hanselman sobre Firma de scripts de PowerShell.

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

El archivo normalmente se encuentra en:

%UserProfile%My DocumentsWindowsPowerShellMicrosoft.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 quiere preocuparse por su configuración de seguridad, puede simplemente eliminarlo y PowerShell no encontrará nada que no pueda ejecutar.

Deja una respuesta

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

uml class diagram

UML – Diagrama de clases

gfg 200x200 min

Operadores bit a bit en C / C ++ – GeeksforGeeks