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 —
- Все пользователи, текущий узел
- Для 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 —
- Текущий пользователь, все узлы
- Для Windows —
$HOME\Documents\PowerShell\Profile.ps1
. - Linux —
~/.config/powershell/profile.ps1
. - macOS:
~/.config/powershell/profile.ps1
- Для Windows —
- Текущий пользователь, текущий узел
- Для Windows —
$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
. - Linux —
~/.config/powershell/Microsoft.PowerShell_profile.ps1
. - macOS:
~/.config/powershell/Microsoft.PowerShell_profile.ps1
- Для Windows —
Примечание.
В 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.exe
NoProfile программы, запускающей 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
сеанс.
См. также
PowerShell