Сведения о профилях
Краткое описание
Описывает создание и использование профиля PowerShell.
Полное описание
Можно создать профиль PowerShell для настройки вашей среды и добавления элементов, относящихся к каждому сеансу PowerShell, который вы запускаете.
Профиль PowerShell — это скрипт, выполняющийся при запуске PowerShell. Профиль можно использовать в качестве скрипта входа для настройки среды. Вы можете добавлять команды, псевдонимы, функции, переменные, оснастки, модули и диски PowerShell. Вы также можете добавить в профиль другие элементы, относящиеся к сеансу, чтобы они были доступны в каждом сеансе без необходимости импортировать или повторно создавать их.
PowerShell поддерживает несколько профилей для пользователей и ведущих программ. Однако он не создает профили для вас. В этом разделе описываются профили, а также описывается, как создавать и обслуживать профили на компьютере.
В нем объясняется, как использовать параметр NoProfile консоли PowerShell (PowerShell.exe) для запуска PowerShell без каких-либо профилей. Кроме того, здесь объясняется влияние политики выполнения PowerShell на профили.
Файлы профилей
PowerShell поддерживает различные файлы профилей. Кроме того, хост-программы PowerShell могут поддерживать собственные профили, относящиеся к конкретному узлу.
Например, консоль PowerShell поддерживает следующие базовые файлы профилей. Профили перечислены в порядке очередности. Первый профиль имеет наивысший приоритет.
Описание | Путь |
---|---|
Все пользователи, все узлы | $PSHOME\Profile.ps1 |
Все пользователи, текущий узел | $PSHOME\Microsoft.PowerShell_profile.ps1 |
Текущий пользователь, все узлы | $Home\[Мое ]Documents\WindowsPowerShell\Profile.ps1 |
Текущий пользователь, текущий узел | $Home\[Мое ]Documents\WindowsPowerShell\ Microsoft.PowerShell_profile.ps1 |
Пути к профилю включают следующие переменные:
- Переменная
$PSHOME
, в которой хранится каталог установки для PowerShell. - Переменная
$Home
, в которой хранится домашний каталог текущего пользователя.
Кроме того, другие программы, в которых размещается PowerShell, могут поддерживать собственные профили. Например, интегрированная среда сценариев PowerShell (ISE) поддерживает следующие профили для конкретного узла.
Описание | Путь |
---|---|
Все пользователи, текущий узел | $PSHOME\Microsoft.PowerShellISE_profile.ps1 |
Текущий пользователь, текущий узел | $Home\[Мое ]Documents\WindowsPowerShell\ Microsoft.PowerShellISE_profile.ps1 |
В справке PowerShell профиль CurrentUser, Current Host —это профиль, который чаще всего называется вашим профилем PowerShell.
Переменная $PROFILE
Автоматическая переменная $PROFILE
содержит пути к профилям PowerShell, доступным в текущем сеансе.
Чтобы просмотреть путь к профилю, отобразите значение переменной $PROFILE
. Вы также можете использовать $PROFILE
переменную в команде для представления пути.
Переменная $PROFILE
сохраняет путь к профилю "Текущий пользователь, текущий узел". Другие профили сохраняются в свойствах заметок переменной $PROFILE
.
Например, $PROFILE
переменная имеет следующие значения в консоли Windows PowerShell.
Описание | Имя |
---|---|
Текущий пользователь, текущий узел | $PROFILE |
Текущий пользователь, текущий узел | $PROFILE.CurrentUserCurrentHost |
Текущий пользователь, все узлы | $PROFILE.CurrentUserAllHosts |
Все пользователи, текущий узел | $PROFILE.AllUsersCurrentHost |
Все пользователи, все узлы | $PROFILE.AllUsersAllHosts |
Так как значения переменной $PROFILE
изменяются для каждого пользователя и в каждом ведущем приложении, убедитесь, что значения переменных профиля отображаются в каждом используемом ведущем приложении PowerShell.
Чтобы просмотреть текущие значения переменной, введите $PROFILE
:
$PROFILE | Get-Member -Type NoteProperty
Переменную можно использовать $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-path> путем к файлу профиля, который требуется создать.
Примечание
Чтобы создать профили "Все пользователи" в Windows Vista и более поздних версиях Windows, запустите PowerShell с параметром Запуск от имени администратора .
Изменение профиля
В текстовом редакторе можно открыть любой профиль PowerShell, например Блокнот.
Чтобы открыть профиль текущего пользователя в текущем ведущем приложении PowerShell в Блокноте, введите:
notepad $PROFILE
Чтобы открыть другие профили, укажите имя профиля. Например, чтобы открыть профиль для всех пользователей всех ведущих приложений, введите:
notepad $PROFILE.AllUsersAllHosts
Чтобы применить изменения, сохраните файл профиля и перезапустите PowerShell.
Выбор профиля
Если вы используете несколько ведущих приложений, поместите элементы, используемые во всех ведущих приложениях, в свой $PROFILE.CurrentUserAllHosts
профиль. Поместите элементы, относящиеся к ведущему приложению, например команду, которая задает цвет фона для ведущего приложения, в профиль, относящийся к ведущему приложению.
Если вы являетесь администратором, который настраивает PowerShell для многих пользователей, следуйте приведенным ниже рекомендациям.
- Сохранение общих элементов в
$PROFILE.AllUsersAllHosts
профиле - Хранение элементов, относящихся к ведущему приложению, в
$PROFILE.AllUsersCurrentHost
профилях, относящихся к ведущему приложению - Хранение элементов для определенных пользователей в профилях пользователей
Не забудьте проверка документацию по ведущему приложению для любой специальной реализации профилей PowerShell.
Использование профиля
Многие элементы, создаваемые в PowerShell, и большинство выполняемых команд влияют только на текущий сеанс. После завершения сеанса элементы удаляются.
Команды и элементы сеанса включают переменные, переменные предпочтения, псевдонимы, функции, команды (за исключением Set-ExecutionPolicy) и модули PowerShell, добавляемые в сеанс.
Чтобы сохранить эти элементы и сделать их доступными во всех будущих сеансах, добавьте их в профиль PowerShell.
Кроме того, профили часто используются для сохранения часто используемых функций, псевдонимов и переменных. При сохранении элементов в профиле их можно использовать в любом применимом сеансе, не создавая их повторно.
Создание профиля
При открытии файла профиля он пуст. Однако вы можете заполнить его переменными, псевдонимами и командами, которые вы часто используете.
Ниже приведено несколько рекомендаций по началу работы.
Добавление команд, упрощающих открытие профиля
Это особенно полезно, если используется профиль, отличный от профиля "Текущий пользователь, текущий узел". Например, добавьте следующую команду:
function Pro {notepad $PROFILE.CurrentUserAllHosts}
Добавление функции, которая перечисляет псевдонимы для любого командлета.
function Get-CmdletAlias ($cmdletname) {
Get-Alias |
Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
Format-Table -Property Definition, Name -AutoSize
}
Настройка консоли
function Color-Console {
$Host.ui.rawui.backgroundcolor = "white"
$Host.ui.rawui.foregroundcolor = "black"
$hosttime = (Get-ChildItem -Path $PSHOME\PowerShell.exe).CreationTime
$hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
$Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
Clear-Host
}
Color-Console
Добавление настраиваемой командной строки PowerShell
function Prompt
{
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}
Дополнительные сведения о командной строке PowerShell см. в разделе about_Prompts.
Параметр NoProfile
Чтобы запустить PowerShell без профилей, используйте параметр NoProfilePowerShell.exe, программу, которая запускает PowerShell.
Для начала откройте программу, которая может запустить PowerShell, например Cmd.exe или powerShell. Вы также можете использовать диалоговое окно Запуск в Windows.
Тип:
PowerShell -NoProfile
Чтобы получить полный список параметров PowerShell.exe, введите:
PowerShell -?
Профили и политика выполнения
Политика выполнения 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
.