2

Я создал файл C:\Users\<myname>\Documents\WindowsPowerShell\profile.ps1 ; однако PowerShell не загружает его при запуске. Я протестировал как PowerShell по умолчанию, так и интегрированный PowerShell VS Code. Я также попытался переименовать файл profile.ps1 в Microsoft.PowerShell_profile.ps1 , но это ничего не изменило. Я перезапускал приложения после каждого изменения.

Запуск Test-Path $profile.CurrentUserAllHosts возвращает True.

Профиль в настоящее время содержит только одну строку (Set-PSReadlineKeyHandler -Key Tab -Function Complete). После запуска встроенной оболочки PowerShell или VS Code, запустите Get-PSReadlineKeyHandler | findstr -i Tab показывает, что он не был установлен. Копирование и вставка строки из профиля, ее запуск, затем выполнение команды Get-... снова показывает, что она установлена правильно, и изменение делает то, что должно. Перезапуск оболочки возвращается к значению по умолчанию.

Есть ли какой-то другой шаг, который мне нужно сделать, чтобы PowerShell запустил профиль? (Я пришел из Linux/UNIX и полагаю, что PowerShell работает аналогично, но, конечно, PowerShell спроектирован совершенно по-другому). Если дополнительного шага нет, почему PowerShell не загружает профиль в этом случае?

Дополнительная информация:

> $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

1 ответ1

2

Решение: изменить политику исполнения

  1. Запустите PowerShell от имени администратора
  2. Set-ExecutionPolicy -ExecutionPolicy Unrestricted

Сообщение об ошибке, как показано:

. : 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

Урок:

Странно то, что я видел сообщение об ошибке (которое не имело значения) каждый раз, когда запускал PS раньше, поэтому я просто привык к его игнорированию. Создание файла profile.ps1 привело к появлению ошибки политики выполнения, но также привело к тому, что предыдущая ошибка перестала появляться, поэтому я просто пропустил ее, потому что, не читая подробности, он просто выглядел как тот же блок красного текста. (По какой-то причине предыдущую ошибку теперь невозможно воспроизвести).

В конце концов, проблему можно описать так: «Пользователь привык игнорировать тривиальную и несущественную ошибку, поэтому важная ошибка осталась незамеченной».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .