PowerShell ISE использует профиль хоста, отличный от стандартного сеанса PowerShell. Переменная $profile
фактически отображает профиль для профиля CurrentUserCurrentHost
по умолчанию, но в этой переменной хранится четыре местоположения профиля . Каждое из этих мест по умолчанию с точечным источником при загрузке PowerShell. Это можно увидеть, набрав $profile | Get-Member -MemberType NoteProperty
, чтобы просмотреть все настроенные профили:
- AllUsersAllHosts
- AllUsersCurrentHost
- CurrentUserAllHosts
- CurrentUserCurrentHost
Прежде чем мы продолжим, давайте поговорим о том, что на самом деле представляет собой PowerShell Host . От Microsoft :
Хост-приложение может определять пространство выполнения, в котором выполняются команды, открывать сеансы на локальном или удаленном компьютере и вызывать команды либо синхронно, либо асинхронно на основе потребности приложения.
Итак, это означает, что хост PowerShell реализует сеанс PowerShell. Это может быть powershell.exe
для базового c стандартного хоста, но может быть любое количество альтернативных приложений или инструментов разработки, которые могут также реализовать свой собственный хост PowerShell по ряду причин.
Расположение профиля AllHosts
должно оставаться стандартным независимо от вашего хоста PowerShell, но разные хосты PowerShell обычно устанавливают свои собственные местоположения профиля CurrentHost
для своего хоста. Например, powershell.exe
является собственным хостом PowerShell и будет иметь собственные профили c, определяемые хостом, с именем Microsoft.PowerShell_profile.ps1
. PowerShell ISE
реализует свой собственный хост PowerShell и имеет различные профили хоста c с именем Microsoft.PowerShellISE_profile.ps1
.
Если вы хотите, чтобы код в вашем профиле был независим от хоста c, вы должны убедиться, что разместить код своего профиля в одном из AllHosts
профилей. Специфичный для хоста код c, такой как то, что вы хотите, чтобы он был доступен только в контексте хоста ISE PowerShell или хоста VSCode PowerShell, должен go в этот профиль хоста c.