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


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 сохраняет домашний каталог текущего пользователя

Переменная $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 определяет, можно ли выполнять скрипты и файлы конфигурации загрузки, включая профили. Политика ограниченного выполнения используется по умолчанию. Он предотвращает выполнение всех скриптов, включая профили. Если вы используете политику "Ограниченный", профиль не запускается, а его содержимое не применяется.

Набор 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сеанс.

См. также