El perfil de PowerShell no se carga

4

Creé el archivo C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1; sin embargo, PowerShell no lo carga en el inicio. He probado tanto el PowerShell predeterminado como el PowerShell integrado de VS Code. También intenté cambiar el nombre del profile.ps1archivo a Microsoft.PowerShell_profile.ps1, pero esto no cambió nada. Relancé las aplicaciones en cuestión después de cada cambio.

Correr Test-Path $profile.CurrentUserAllHostsdevuelve True.

El perfil actualmente solo contiene una línea ( Set-PSReadlineKeyHandler -Key Tab -Function Complete). Después de iniciar el shell integrado de PowerShell o VS Code, la ejecución Get-PSReadlineKeyHandler | findstr -i Tabrevela que no se ha configurado. Copiar y pegar la línea desde el perfil, ejecutarla y luego ejecutar el Get-...comando nuevamente revela que está configurada correctamente y que el cambio hace lo que se supone que debe hacer. Relanzar el shell vuelve al valor predeterminado.

¿Hay algún otro paso que deba hacer para que PowerShell ejecute el perfil? (Vengo de un entorno Linux / UNIX y supongo que PowerShell funciona de manera similar, pero, por supuesto, PowerShell está diseñado de manera completamente diferente). Si no hay un paso adicional, ¿por qué PowerShell no carga el perfil en este caso?

Información adicional:

> $profile | Format-List * -force
AllUsersAllHosts       : C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
AllUsersCurrentHost    : C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts    : C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\<myname>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Length                 : 76
Hidroavión caprichoso
fuente
¿Pregunta cómo modificar el perfil predeterminado de PowerShell?
Ramhound
¿Está dentro de una consola PowerShell o PowerShell ISE? Esto hace la diferencia, y no puedo enviar mi respuesta hasta que me proporcione esa información.
Ramhound
Solo estoy usando PowerShell.exe; $host.Nameregresa 'ConsoleHost'
Whimsical Seaplane
1
Actualice su pregunta con la salida desinfectada de$PROFILE | Format-List * -Force
Ramhound
¿Has intentado modificar C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1?
Ramhound

Respuestas:

4

Solución: cambiar la política de ejecución

  1. Inicie PowerShell como administrador
  2. Set-ExecutionPolicy -ExecutionPolicy Unrestricted

El mensaje de error como se muestra:

. : File C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:3
+ . 'C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1'
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

La leccion:

Lo extraño es que vi un mensaje de error (que no era importante) cada vez que lancé PS antes, así que me acostumbré a ignorarlo. La creación del profile.ps1archivo hizo que apareciera el error de la política de ejecución, pero también dejó de aparecer el error anterior , así que lo omití porque, sin leer los detalles, parecía el mismo bloque de texto rojo. (El error anterior ahora parece ser imposible de replicar, por alguna razón).

Al final, el problema se puede describir como "El usuario se acostumbró a ignorar errores triviales y sin importancia, por lo que el error importante pasó desapercibido".

Hidroavión caprichoso
fuente
Esto no funciona para mi. Incluso me desconecté y volví a encender y luego ejecuté lo get-executionpolicyque regresó Unrestricted. Aún así, el shell no está ejecutando mi archivo profile.ps1.
Tevya