Skip to content

Permitir la ejecución de scripts Powershell en Windows 10

Powershell es un intérprete de comandos para sistemas Windows muy popular, por potente y por extenso, dado que cualquiere puede desarrollar sus propios scripts y se puede utilizar para infinidad de cosas, ya sea reparar archivos corruptos en Windows o realizar bastionado, por ejemplo desactivar shares administrativos en Windows.

Anteriormente a Windows 10 / 8.1 tenía más protagonismo el CMD de toda la vida (o command prompt). No obstante Powershell viene incluido de forma nativa en sistemas Windows a partir de Windows 7 y en Windows Server 2008 en adelante.

La ejecución de scripts Powershell es algo muy común hoy en día en la administración de sistemas, porque permite automatizar tareas pesadas para no tener que realizar tanta manualidad.

Lo que ocurre es que el ajuste por defecto en Windows, aunque permite abrir y ejecutar comandos desde este terminal, no permite la ejecución de scripts debido al peligro que puede suponer. Si cargamos un script malintencionado, el sistema podría infectarse, volverse inestable, etcétera. Esto es algo con lo que me encontré un buen día, intentando cargar un script.

Solución al error de PowerShell «No se puede cargar el archivo porque la ejecución de scripts está deshabilidada en este sistema»

A continuación detallo tres métodos diferentes que nos llevarán al mismo resultado: seremos capaces de evitar el mensaje y saltarnos la prohibición que trae Windows por defecto. No cabe duda de que el primer método (que implica hacerlo desde la propia linea de comandos Powershell) es el más conveniente para el usuario medio.

Sin embargo, los otros métodos restantes serán de utilidad al administrador de sistemas o seguridad para controlar esta capacidad en entornos corporativos, además de poder automatizar su configuración.

Permitir ejecución de scripts Powershell en Windows 10

Abriremos la consola de Powershell pulsando WIN + X > Powershell (administrador) en sistemas Windows 10

Si aparece Símbolo de sistema en su lugar, escribiremos en el CMD «powershell» seguido de intro (si queremos trabajar desde esa misma ventana) o lo buscaremos en el lanzador de aplicaciones.

Abrir powershell Windows 10

Ahora que estamos en la consola, escribiremos:

Get-ExecutionPolicy

Seguro que veremos un ajuste como el siguiente (restricted).

Powershell Get-ExecutionPolicy

Ahora, para ver los modos de ejecución de scripts disponibles, escribiremos:

Get-ExecutionPolicy -list

Get-ExecutionPolicy -list

Modos de ExecutionPolicy

Estos son los modos de ejecución, de más restrictivo a menos restrictivo.

  • Restricted: Opción predefinida en Windows 10. No permite ejecutar scripts, ni archivos de configuración .ps1xml u otros similares, sino solo comandos.
  • Allsigned: Permite ejecución de scripts y archivos de configuración firmados por un editor de confianza. Esto incluye los escritos en el equipo local. Conlleva el riesgo de ejecutar un script que sea malintencionado, a pesar de haber sido firmado.
  • RemoteSigned: permite ejecutar scripts powershell y archivos de configuración descargados de internet (de cualquier forma). Conlleva cierto riesto, dado que no solicita firmas digitales para scripts diseñados en el equipo local. Para ejecutar scripts descargados de internet (sin firmar) es necesario usar la opción Unblock-File.
  • Unrestricted: permite ejecutar cualquier script o archivo de configuración, esté firmado o no. Muestra advertencia al usuario.
  • Bypass: similar al anterior, pero además de no bloquear tampoco alerta de los riesgos. Este modo se suele utilizar en integraciones de Powershell con otras aplicaciones, en las que funciona en una capa inferior, dado que dichas aplicaciones cuentan con un modelo de seguridad propio.
  • Undefined: no se establece directiva alguna. Esto se traduce normalmente en «Restricted», suponiendo que en todos los ámbitos se haya dejado sin definir.

Es recomedable utilizar el principio de mínimo privilegio, por lo que haremos lo siguiente:

Set-ExecutionPolicy RemoteSigned

Powershell Set-ExecutionPolicy

También es posible escribirlo así.

Set-ExecutionPolicy RemoteSigned -Force

Aceptaremos el aviso correspondiente, sabiendo lo que conlleva. Si queremos verificarlo, volveremos a escribir:

Get-ExecutionPolicy

Con este paso habremos terminado, no es preciso reiniciar.

Permitir ejecutar scripts Powershell mediante el Editor de registro

NOTA: siempre es recomendable hacer una copia de seguridad del registro antes de hacer cambios.

Pulsaremos la combinación de teclas WIN + R y escribiremos:

Regedit

Navegaremos por la ruta:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell

Una vez allí, crearemos un nuevo valor de cadena con el nombre «Execution Policy»:

Habilitar scripts en powershell mediante editor del registo

Así es como debe quedar el valor de la nueva cadena:

Habilitar scripts en powershell mediante editor del registro 2

Tras aceptar los cambios, se habrá aplicado el nuevo ajuste.

Permitir ejecución de scripts para Powershell mediante Política de Grupo

Si disponemos de un sistema operativo Windows 10 Pro o Enterprise (en versiones anteriores es similar) podemos acceder al Editor de Directivas de Grupo. Para ello, pulsaremos la combinación WIN + R y escribiremos:

gpedit.msc

Navegaremos por los siguientes objetos:

Configuración del equipo > Plantillas administrativas > Componentes de Windows > Windows Powershell

Activar scripts powershell con Editor de Directivas de grupo

Ahora seleccionaremos «Activar la ejecución de scripts» y seleccionaremos Habilitada.

Habilitar scripts en Powershell

Os recomiendo seleccionar la opción más restrictiva: «Permitir solo scripts firmados

Espero que os resulte de ayuda. No dudéis en preguntar si tenéis alguna duda e intentaré ayudaros.

deweloper View All

Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.

27 thoughts on “Permitir la ejecución de scripts Powershell en Windows 10 Leave a comment

  1. Muy bueno. Me acuerdo cuando empecé con el bastionado de equipos siguiendo las guías CCN-STIC, que al principio me encontraba con algunos PCs que no ejecutaban los Scripts adjuntos a las guías. Me estuve dando cabezazos hasta que me decidí a editar los Scripts y es cuando me di cuenta que la ejecución requería RemoteSigned. Fue cambiar de Restricted a RemoteSigned y todo fue como la seda. Eso sí, tenía que tener la precaución de volver a Restricted ya que al fin y al cabo se trataba de PCs bastionados.
    Salu2

  2. Excelente, ahora puedo usar el terminal integrado de vs code como antes. pero no entiendo porque antes no tenia problemas al usar Angular

  3. Que tal a todos, realicé un codigo para una persona mayor (edad avanzada) este codigo ejecuta un proceso que debe activarse cada vez que enciende su computadora, esta diseñado con vbscript, este codigo copia un documente en el Escritorio y asi le facilita el trabajo a esta persona.

    Mi pregunta es: ¿Donde se debe copiar este script para que aparezca el documento en su escritorio?

    Seria posible en el regedit? Si no es alli, donde entonces? La idea es activarlo al aparecer el Escritorio. Por favor que sugerencia aportan?

    • Hola Alejo, el script puede estar en cualquier parte de la máquina excepto en el registro. Para activarlo bastará configurar una tarea de Windows que lo lance cuando ocurra el evento de inicio de sesión de usuario, por ejemplo. El Id de evento sería 4624. Saludos.

  4. hola me podrias ayudar, mi pc no abre ciertos programas los bloquea intente varias soluciones pero nada aun

  5. Al ejecutar la opcion unrestricted en poweshell me sale un error -1073741515 me podrian indicar que es? Aiiiuuuuddaaaa!!!

  6. Set-ExecutionPolicy Unrestricted
    S
    Y listo ahora el gobierno intentara rastrearme por divulgar esta informacion comprometedora

  7. Excelente aporte, no buscaba dar con el resultado en internet, pero me ayudaste con el force, estoy en deuda, saludos!

  8. Hola Alejandro! Muy bien explicado y funciono perfecto. Te queria consultar, tuve que realizar este procedimiento para finalizar correctamente la instalacion de gulp para desarrollo web. Pero me quede con la duda, esta es la manera correcta? No estamos exponiendo nuestra pc de más? Me llama la atencion que esta sea la manera de solucionar el error que tuve con gulp =/ Saludos!

  9. Como puedo hacer para que se ejecute un script hecho en PowerShell en el programador de tareas de Windows 10

  10. Increible, estuve buscando por mucho tiempo la manera de poder convertir archivos pesados de CSV a JSON
    y de esta manera se logro. Muchas gracias por el gran aporte que has brindado

  11. Hola Alejandro, mira que tengo este mensaje ejecutando desde visualcode un script de python:

    ¨Windows PowerShell no carga comandos de la ubicación actual de forma predeterminada¨ ya habilité la ejecución de scripts desde el gpedit.msc pero aun no me funciona

  12. Amigo excelente!! Estoy utilizando Python en mi Pc con entornos virtuales y me daba problemas al ejecutar los scripts, pero ya con tu explicación todo solucionado. Agradecido amigo, bendiciones

Deja un comentario