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.
Ahora que estamos en la consola, escribiremos:
Get-ExecutionPolicy
Seguro que veremos un ajuste como el siguiente (restricted).
Ahora, para ver los modos de ejecución de scripts disponibles, escribiremos:
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
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»:
Así es como debe quedar el valor de la nueva cadena:
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
Ahora seleccionaremos «Activar la ejecución de scripts» y seleccionaremos Habilitada.
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.
Categories
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.
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
Gracias Alberto. Efectivamente si son bastionados lo mejor es dejarlos como estaban. No vaya a ser… jejeje
no me funciona.AYUDAAAA
Excelente, ahora puedo usar el terminal integrado de vs code como antes. pero no entiendo porque antes no tenia problemas al usar Angular
Genial!
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.
hola me podrias ayudar, mi pc no abre ciertos programas los bloquea intente varias soluciones pero nada aun
Hola Pablo, con tan poco nivel de detalle en tu descripción no sabría por donde empezar. Saludos.
Al ejecutar la opcion unrestricted en poweshell me sale un error -1073741515 me podrian indicar que es? Aiiiuuuuddaaaa!!!
Puedes colgar una captura y compartirla?
Set-ExecutionPolicy Unrestricted
S
Y listo ahora el gobierno intentara rastrearme por divulgar esta informacion comprometedora
Hola, cuidado con usar ese ajuste, puede ser peligroso
esta pagina no se arriesga y me censura nomas (Y)
Aquí no hay censura salvo que haya mala fe o faltas de respeto. Saludos.
Muchas gracias, buen hombre, me ha servido
Excelente aporte, no buscaba dar con el resultado en internet, pero me ayudaste con el force, estoy en deuda, saludos!
Muchas gracias me sirvio pude correr websocket en modo developer con visual studio
Agradecido con el de arriba.
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!
Muchas gracias!!!! Fue muy facil y util!!1
muchas gracias, a 2022, aún funciona el método
Como puedo hacer para que se ejecute un script hecho en PowerShell en el programador de tareas de Windows 10
Busca algún tutorial sobre como hacerlo, es sencillo.
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
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
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