Поделиться через


about_Profiles

Краткое описание

Описывает создание и использование профиля PowerShell.

Подробное описание

Вы можете создать профиль PowerShell для настройки среды и добавить элементы, относящиеся к сеансу, в каждый сеанс PowerShell, который вы запускаете.

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

PowerShell поддерживает несколько профилей для пользователей и ведущих программ. Однако он не создает профили для вас.

Типы и расположения профилей

PowerShell поддерживает несколько файлов профилей, которые относятся к пользователям и узлам PowerShell. На компьютере можно использовать любой или все эти профили.

Консоль PowerShell поддерживает следующие основные файлы профиля. Эти пути к файлам являются расположениями по умолчанию.

  • Все пользователи, все узлы
    • Для Windows — $PSHOME\Profile.ps1.
    • Linux — /opt/microsoft/powershell/7/profile.ps1.
    • Macos- /usr/local/microsoft/powershell/7/profile.ps1
  • Все пользователи, текущий узел
    • Для Windows — $PSHOME\Microsoft.PowerShell_profile.ps1.
    • Linux — /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1.
    • Macos- /usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
  • Текущий пользователь, все узлы
    • Для Windows — $HOME\Documents\PowerShell\Profile.ps1.
    • Linux — ~/.config/powershell/profile.ps1.
    • Macos- ~/.config/powershell/profile.ps1
  • Текущий пользователь, текущий узел
    • Для Windows — $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1.
    • Linux — ~/.config/powershell/Microsoft.PowerShell_profile.ps1.
    • Macos- ~/.config/powershell/Microsoft.PowerShell_profile.ps1

Примечание

В Windows расположение Documents папки можно изменить с помощью перенаправления папок или OneDrive. Не рекомендуется перенаправлять папку в Documents сетевую папку или включать ее в OneDrive. Перенаправление папки может привести к сбою загрузки модулей и созданию ошибок в сценариях профиля. Сведения об удалении Documents папки из управления OneDrive см. в документации по OneDrive.

Скрипты профиля выполняются в указанном порядке. Это означает, что изменения, внесенные в профиль AllUsersAllHosts , могут быть переопределены любым другим скриптом профиля. Профиль CurrentUserCurrentHost всегда выполняется последним. В справке PowerShell профиль CurrentUserCurrentHost чаще всего называется профилем PowerShell.

Другие программы, в которых размещается PowerShell, могут поддерживать собственные профили. Например, Visual Studio Code (VS Code) поддерживает следующие профили для конкретного узла.

  • Все пользователи, текущий узел — $PSHOME\Microsoft.VSCode_profile.ps1
  • Текущий пользователь, текущий узел — $HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1

Пути к профилю включают следующие переменные:

  • Переменная $PSHOME хранит каталог установки для PowerShell.
  • Переменная $HOME сохраняет домашний каталог текущего пользователя.

Примечание

В Windows расположение Documents папки можно изменить с помощью перенаправления папок или OneDrive. Не рекомендуется перенаправлять папку в Documents сетевую папку или включать ее в OneDrive. Перенаправление папки может привести к сбою загрузки модулей и созданию ошибок в сценариях профиля. Сведения об удалении Documents папки из управления OneDrive см. в документации по OneDrive.

Переменная $PROFILE

Автоматическая переменная $PROFILE содержит пути к профилям PowerShell, доступным в текущем сеансе.

Чтобы просмотреть путь к профилю, отобразите значение переменной $PROFILE . Можно также использовать $PROFILE переменную в команде для представления пути.

Переменная $PROFILE сохраняет путь к профилю "Текущий пользователь, текущий узел". Другие профили сохраняются в свойствах заметок переменной $PROFILE .

Например, $PROFILE переменная имеет следующие значения в консоли Windows PowerShell.

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

Так как значения переменной $PROFILE изменяются для каждого пользователя и в каждом ведущем приложении, убедитесь, что значения переменных профиля отображаются в каждом используемом ведущем приложении PowerShell.

Чтобы просмотреть текущие значения переменной, введите $PROFILE :

$PROFILE | Select-Object *

Переменную можно использовать $PROFILE во многих командах. Например, следующая команда открывает профиль "Текущий пользователь, текущий узел" в Блокноте:

notepad $PROFILE

Следующая команда определяет, был ли создан профиль "Все пользователи, все узлы" на локальном компьютере:

Test-Path -Path $PROFILE.AllUsersAllHosts

Создание профиля

Чтобы создать профиль PowerShell, используйте следующий формат команды:

if (!(Test-Path -Path <profile-name>)) {
  New-Item -ItemType File -Path <profile-name> -Force
}

Например, чтобы создать профиль для текущего пользователя в текущем ведущем приложении PowerShell, используйте следующую команду:

if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force
}

В этой команде if инструкция предотвращает перезапись существующего профиля. Замените значение переменной $PROFILE путем к файлу профиля, который требуется создать.

Примечание

Чтобы создать профили "Все пользователи" в Windows Vista и более поздних версиях Windows, запустите PowerShell с параметром Запуск от имени администратора .

Изменение профиля

Вы можете открыть любой профиль PowerShell в текстовом редакторе, например в Блокноте.

Чтобы открыть профиль текущего пользователя в текущем ведущем приложении PowerShell в Блокноте, введите:

notepad $PROFILE

Чтобы открыть другие профили, укажите имя профиля. Например, чтобы открыть профиль для всех пользователей всех ведущих приложений, введите:

notepad $PROFILE.AllUsersAllHosts

Чтобы применить изменения, сохраните файл профиля и перезапустите PowerShell.

Выбор профиля

Если вы используете несколько ведущих приложений, поместите элементы, используемые во всех ведущих приложениях, в свой $PROFILE.CurrentUserAllHosts профиль. Поместите элементы, относящиеся к ведущему приложению, например команду, которая задает цвет фона для ведущего приложения, в профиль, относящийся к ведущему приложению.

Если вы являетесь администратором, который настраивает PowerShell для многих пользователей, следуйте приведенным ниже рекомендациям.

  • Сохранение общих элементов в $PROFILE.AllUsersAllHosts профиле
  • Хранение элементов, относящихся к ведущему приложению, в $PROFILE.AllUsersCurrentHost профилях, относящихся к ведущему приложению
  • Хранение элементов для определенных пользователей в профилях пользователей

Обязательно проверка документацию по ведущему приложению для любой специальной реализации профилей PowerShell.

Использование профиля

Многие элементы, создаваемые в PowerShell, и большинство выполняемых команд влияют только на текущий сеанс. После завершения сеанса элементы удаляются.

Команды и элементы, относящиеся к сеансу, включают переменные PowerShell, переменные среды, псевдонимы, функции, команды и модули PowerShell, добавляемые в сеанс.

Чтобы сохранить эти элементы и сделать их доступными во всех будущих сеансах, добавьте их в профиль PowerShell.

Другой распространенный способ использования профилей — сохранение часто используемых функций, псевдонимов и переменных. При сохранении элементов в профиле их можно использовать в любом применимом сеансе, не создавая их повторно.

Запуск профиля

При открытии файла профиля он пуст. Однако его можно заполнить переменными, псевдонимами и командами, которые вы часто используете.

Ниже приведено несколько рекомендаций для начала работы.

Добавление функции, которая перечисляет псевдонимы для любого командлета

function Get-CmdletAlias ($cmdletname) {
  Get-Alias |
    Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
      Format-Table -Property Definition, Name -AutoSize
}

Настройка консоли

function CustomizeConsole {
  $hosttime = (Get-ChildItem -Path $PSHOME\pwsh.exe).CreationTime
  $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
  $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
  Clear-Host
}
CustomizeConsole

Добавление настраиваемой командной строки PowerShell

function Prompt {
    $env:COMPUTERNAME + "\" + (Get-Location) + "> "
}

Дополнительные сведения о командной строке PowerShell см. в разделе about_Prompts.

Другие примеры профиля см. в разделе Настройка среды оболочки.

Параметр NoProfile

Чтобы запустить PowerShell без профилей, используйте параметр pwsh.exeNoProfile для программы, которая запускает PowerShell.

Для начала откройте программу, которая может запустить PowerShell, например Cmd.exe или powerShell. Вы также можете использовать диалоговое окно Запуск в Windows.

Тип:

pwsh -NoProfile

Чтобы получить полный список параметров , введите pwsh.exe:

pwsh -?

Профили и политика выполнения

Политика выполнения PowerShell частично определяет, можно ли запускать скрипты и загружать файлы конфигурации, включая профили. По умолчанию используется политика ограниченного выполнения. Это предотвращает выполнение всех скриптов, включая профили. Если вы используете политику Restricted, профиль не запускается, и его содержимое не применяется.

Команда Set-ExecutionPolicy задает и изменяет политику выполнения. Это одна из немногих команд, которая применяется во всех сеансах PowerShell, так как значение сохраняется в реестре. Вам не нужно настраивать его при открытии консоли и не нужно сохранять Set-ExecutionPolicy команду в своем профиле.

Профили и удаленные сеансы

Профили PowerShell не запускаются автоматически в удаленных сеансах, поэтому команды, добавляемые профилями, отсутствуют в удаленном сеансе. Кроме того, $PROFILE автоматическая переменная не заполняется в удаленных сеансах.

Чтобы запустить профиль в сеансе, используйте командлет Invoke-Command .

Например, следующая команда запускает профиль "Текущий пользователь, текущий узел" с локального компьютера в сеансе в $s.

Invoke-Command -Session $s -FilePath $PROFILE

Следующая команда запускает профиль "Текущий пользователь, текущий узел" с удаленного компьютера в сеансе в $s. $PROFILE Так как переменная не заполнена, команда использует явный путь к профилю. Мы используем оператор точечного источников, чтобы профиль выполнялся в текущем область на удаленном компьютере, а не в его собственной область.

Invoke-Command -Session $s -ScriptBlock {
  . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

После выполнения этой команды команды, которые профиль добавляет в сеанс, доступны в $s.

См. также раздел