PowerShell ISE не распознает переменные $ profile

В моем каталоге $ profile у меня есть несколько пользовательских переменных, а также переменные по умолчанию, такие как $ root ( что равно "C: " ) и т. Д. Одна из моих пользовательских переменных хранит путь к файлу на моем рабочем столе, поэтому я может легко ссылаться на путь, а также не нужно создавать переменную каждый раз при запуске PS. Если я пытаюсь разрешить любое значение переменной из пути $ profile в ISE ( и панель скриптов, и консоль ), это не сработает. Однако, если я использую обычный терминал PS, это не проблема. Есть предложения или объяснения?

Всего 3 ответа


PowerShell ISE использует профиль хоста, отличный от стандартного сеанса PowerShell. Переменная $profile фактически отображает профиль для профиля CurrentUserCurrentHost по умолчанию, но в этой переменной хранятся четыре расположения профиля . При загрузке PowerShell каждое из этих мест по умолчанию имеет точечный источник . Вы можете увидеть это, набрав $profile | Get-Member -MemberType NoteProperty $profile | Get-Member -MemberType NoteProperty для просмотра всех настроенных профилей:

  • AllUsersAllHosts
  • AllUsersCurrentHost
  • CurrentUserAllHosts
  • CurrentUserCurrentHost

Прежде чем продолжить, давайте поговорим о том, что такое PowerShell Host . От Microsoft :

Хост-приложение может определять пространство выполнения, в котором выполняются команды, открывать сеансы на локальном или удаленном компьютере и вызывать команды либо синхронно, либо асинхронно в зависимости от потребностей приложения.

Итак, это означает, что хост PowerShell реализует сеанс PowerShell. Это может быть powershell.exe для базового стандартного хоста, но может быть любое количество альтернативных приложений или инструментов разработки, которые также могут реализовывать свой собственный хост PowerShell по ряду причин.


AllHosts профилей AllHosts должно оставаться стандартным независимо от вашего хоста PowerShell, но разные хосты PowerShell обычно устанавливают свои собственные CurrentHost профиля CurrentHost для своего хоста. Например, powershell.exe является собственным хостом PowerShell и будет иметь свои собственные профили, специфичные для хоста, с именем Microsoft.PowerShell_profile.ps1 . PowerShell ISE реализует свой собственный хост PowerShell и имеет различные профили для конкретного хоста с именем Microsoft.PowerShellISE_profile.ps1 .

Если вы хотите, чтобы код в вашем профиле был независимым от хоста, вы должны обязательно разместить код своего профиля в одном из профилей AllHosts . Специфичный для хоста код, например, вещи, которые вы хотите, чтобы они были доступны только в контексте хоста ISE PowerShell или хоста VSCode PowerShell, должен войти в этот профильный хост-профиль.


$ профиль отличается в ISE:

$profile
C:UsersjsDocumentsWindowsPowerShellMicrosoft.PowerShellISE_profile.ps1

приставка:

$profile
C:UsersjsDocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1

Профиль - это сценарий Windows PowerShell ISE, который запускается автоматически при запуске нового сеанса. Вы можете создать один или несколько профилей Windows PowerShell для Windows PowerShell ISE и использовать их для добавления или настройки среды Windows PowerShell или Windows PowerShell ISE, подготавливая ее для использования с переменными, псевдонимами, функциями, а также желаемыми настройками цвета и шрифта. доступный. Профиль влияет на каждый сеанс Windows PowerShell ISE, который вы запускаете.

Если вы используете только Windows PowerShell ISE для запуска Windows PowerShell, сохраните все элементы в одном из профилей, специфичных для ISE, таких как профиль CurrentUserCurrentHost для Windows PowerShell ISE или профиль AllUsersCurrentHost для Windows PowerShell ISE.

Если вы используете несколько программ хоста для запуска Windows PowerShell, сохраните свои функции, псевдонимы, переменные и команды в профиле, который влияет на все программы хоста, такие как CurrentUserAllHosts или профиль AllUsersAllHosts, и сохраните специфичные для ISE функции, такие как цвет и шрифт. настройка в профиле CurrentUserCurrentHost для Windows PowerShell ISE или в профиле AllUsersCurrentHost для Windows PowerShell ISE.

Следующие типы профилей и пути, показанные ниже, являются профилями, которые можно создавать и настраивать в Windows PowerShell ISE.

Типы профилей и пути

  • Текущий пользователь, PowerShell ISE $PROFILE.CurrentUserCurrentHost or $PROFILE
  • Все пользователи, PowerShell ISE $PROFILE.AllUsersCurrentHost
  • Текущий пользователь, все хосты $PROFILE.CurrentUserAllHosts
  • Все пользователи, все хосты $PROFILE.AllUsersAllHosts

Дополнительную информацию для создания совершенно нового пользователя можно найти на странице документации Windows PS ISE, документации по профилям PowerShell ISE.


Есть идеи?

10000