JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo solucionar el error con "Microsoft.PowerShell_profile.ps1" en PowerShell

powershell-logoComo ya os he contado hace poco, PowerShell es una herramienta avanzada de línea de comandos para Windows que trata de llevar a este sistema la potencia de otros intérpretes de comandos (fundamentalmente el shell bash para UNIX), muy extendidos en otros sistemas operativos.

Si estás trabajando con alguna herramienta de administración desde línea de comandos puede que al cargar PowerShell te muestre el siguiente error:

File Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.

o en español "El archivo Microsoft.PowerShell_profile.ps1 no se ha podido cargar porque la ejecución de scripts está deshabilitada en este sistema":

Error-con-Microsoft-PowerShell_profile-1

Pulsa para aumentar

Este error se debe a que, por defecto, los permisos de ejecución de scripts externos están restringidos en PowerShell y solamente nos permite ejecutar comandos interactivos, es decir, directamente en la consola. El archivo que menciona el mensaje de error se crea por parte de algunas aplicaciones (por ejemplo posh--git) para cargar un entorno de ejecución personalizado para el usuario (en el caso de posh-git, por ejemplo, para modificar la salida del prompt de modo que nos indique el estado de un repositorio Git cuando entramos en él).

Dado que los permisos por defecto no permiten la ejecución de archivos de comandos PowerShell (con extensión .ps1), la ejecución falla y obtenemos ese error.

En PowerShell existe una política que controla los permisos de ejecución y que decide qué clase de scripts se pueden ejecutar y cuáles no. Por defecto la política tiene el valor "Restricted" que quiere decir que no se puede ejecutar script alguno y solo se puede usar PowerShell de modo interactivo (en la consola).

Este permiso está muy bien para evitar que ocurran burradas en los sistemas, ya que todos llevan PowerShell (incluso Windows para usuarios) y no permitiendo la ejecución no se nos colará ningún script "furtivo2 que pueda poner en peligro a nuestro equipo.

Podemos ver el valor actual de esta política escribiendo:

Get-ExecutionPolicy

en la línea de comandos de PowerShell (ver la figura más abajo).

Los valores posibles para esta política son:

  • Restricted.
  • AllSigned: cualquier script firmado digitalmente con una firma digital válida se podrá ejecutar.
  • RemoteSigned: los scripts que se descarguen de Internet o estén en un recurso de red remoto se pueden ejecutar si están firmados digitalmente por un editor. Los scripts creados localmente (no descargados de Internet) se podrán ejecutar sin problema.
  • Unrestricted: se permite ejecutar todos los scripts, sea como sea. Mucho ojo con esto. Salvo en casos muy particulares no deberíamos usar nunca esta opción.

Para cambiar la política y evitar el error que nos sale solamente debemos escribir:

Set-ExecutionPolicy RemoteSigned

Como se ve en esta figura:

Error-con-Microsoft-PowerShell_profile-2

Pulsa para aumentar

¡Y listo!

A partir de ese momento el error no volverá a salir y podremos cargar el script de nuestro perfil sin problema.

¡Espero que te sea útil!

José Manuel Alarcón José Manuel Alarcón
Fundador y director de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Agregar comentario