PowerShell ISE не распознает переменные $ profile - PullRequest
1 голос
/ 16 января 2020

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

Ответы [ 3 ]

1 голос
/ 16 января 2020

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

$profile
C:\Users\js\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

Консоль:

$profile
C:\Users\js\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
0 голосов
/ 16 января 2020

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

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

Если для запуска Windows PowerShell используется несколько хост-программ, сохраните свои функции, псевдонимы, переменные и команды в профиле, которые влияют на все хост-программы, такие как CurrentUserAllHosts или профиль AllUsersAllHosts, и сохраняют специфичные для ISE функции c, такие как настройка цвета и шрифта в профиле CurrentUserCurrentHost для Windows профиля ISE PowerShell или Профиль 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

0 голосов
/ 16 января 2020

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.

...