Файлы профиля PowerShell: начало работы
Профиль PowerShell по сути представляет собой обычный сценарий PowerShell (PS1), который запускается при запуске PowerShell и используется в качестве сценария входа в систему для настройки среды. Вы можете добавлять свои собственные функции, команды и псевдонимы, импортировать модули PowerShell, устанавливать переменные среды, изменять внешний вид и настройки консоли PoSh, используя профиль PowerShell. Все элементы профиля будут автоматически применяться к каждому новому сеансу PowerShell.
Эквивалентом профилей PowerShell в Linux являются файлы profile, .bashrc, .bash_profile , используемые для автоматического запуска сценариев при запуске оболочки.
В Windows PowerShell существует несколько путей для хранения файлов профиля. В таблице ниже показаны все пути по их приоритету (профиль с наивысшим приоритетом идет первым):
- Path
Описание
$PSHOME\Profile.ps1ВсеПользователиВсеХосты
$PSHOME\Microsoft.PowerShell_profile.ps1-
ВсеПользователиТекущийХост
$Home\Documents\PowerShell\Profile.ps1ТекущийПользовательВсеХосты
$Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1ТекущийПользовательТекущийХост
Если вы хотите настроить параметры сеанса PowerShell для всех пользователей компьютера, вам необходимо использовать команду
$PROFILE.AllUsersAllHostsфайл. Чтобы настроить профиль PowerShell только для текущего пользователя, сохраните конфигурацию в
$PROFILE.CurrentUserCurrentHostЧтобы найти свой профиль PowerShell, просто запустите команду
$Profileкоманда. По умолчанию путь к профилю пользователя PowerShell: C:\Users\username\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
В Windows PowerShell
$HomeПеременная среды относится к папке текущего профиля пользователя (C:\Users\username).
$PsHomeотносится к каталогу, в который установлен PowerShell (C:\Windows\System32\WindowsPowerShell\v1.0).
-
В новых версиях PowerShell Core 7.x
$PSHomeотносится к C:\Program Files\PowerShell\7.
В PowerShell Core для Linux профиль находится в папке
/opt/microsoft/powershell/profile.ps1или
/usr/local/microsoft/powershell/7/profile.ps1
PowerShell ISE имеет собственные файлы профиля:
$PsHome\Microsoft.PowerShellISE_profile.ps1Все пользователи
$Home\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1Текущий пользователь
Visual Studio Code также имеет свои собственные профили, если он используется в качестве редактора сценариев PowerShell):
$PSHOME\Microsoft.VSCode_profile.ps1Все пользователи
$Home\Documents\PowerShell\Microsoft.VSCode_profile.ps1Текущий пользователь
Все пути к профилям можно найти в переменных среды $PROFILE.
$PROFILE | Get-Member -Type NotePropertyЧтобы получить доступ к файлу профиля (например, текущему профилю пользователя):
$PROFILE.CurrentUserCurrentHostили
$PROFILEЧтобы проверить, создан ли профиль PowerShell текущего пользователя, выполните команду ниже:
Test-Path -Path $PROFILEВ этом примере файл профиля PowerShell для текущего пользователя не создан (
False).
По умолчанию файлы профилей PowerShell в Windows не создаются.
Чтобы создать файл профиля PowerShell, если он не существует, используйте сценарий ниже:
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}Вы можете редактировать его в любом текстовом редакторе. Например, вы можете редактировать файл профиля, используя:
Блокнот:
notepad $profilePowerShell ISE:
ise $profileКод Visual Studio:
code $profile
Давайте попробуем настроить собственный профиль PowerShell. В этом примере мы настроим цвет, заголовок консоли (он будет отображать версию PowerShell), изменим каталог PowerShell по умолчанию и отобразим имя компьютера в приглашении консоли PS:
function CustomizePSConsole {
$Host.ui.rawui.foregroundcolor = "cyan"
$hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
$Host.UI.RawUI.WindowTitle = "This is PowerShell $hostversion"
Set-Location 'C:\PS\'
Clear-Host
}
CustomizePSConsoleДавайте покажем имя компьютера в командной строке PS:
function Prompt
{
$env:COMPUTERNAME + " | " + (Get-Location) + "> "
}Например, вы можете подключить сетевой диск:
New-PSDrive -Name “Tools” -PSProvider "FileSystem" -Root "\\MUN-DEV01\Scripts"Если вы часто используете PowerShell для управления клиентами Azure или Microsoft 365, вы можете отображать запрос на подключение к вашему клиенту каждый раз при запуске консоли. Если вы наберете Y, следующий сценарий предложит вам ввести свои учетные данные и подключиться к вашему клиенту Exchange Online:
$connectM365= Read-Host "Connect to Exchange Online? (Y/N)"
If ($connectM365 -eq "Y"){
$LiveCred = Get-Credential
Connect-ExchangeOnline -Credential $LiveCred
}Вы можете добавить
Clear-Hostcmdlet в конец файла вашего профиля, чтобы очистить консоль. Сохраните файл профиля как Microsoft.PowerShell_profile.ps1 и перезапустите PowerShell. При следующем запуске все настройки профиля будут автоматически применены к вашей консоли и ее внешний вид изменится.
Поскольку файл профиля PowerShell представляет собой файл сценария PS1, обратите внимание на настройки вашей политики выполнения PowerShell. По умолчанию файлы сценариев PS1 (включая профили) не могут запускаться в соответствии с политикой Ограничено. Чтобы разрешить применение профиля PowerShell, необходимо изменить политику выполнения PowerShell на Remotesigned. Вы можете настроить параметры с помощью объекта групповой политики или следующей команды:
Set-ExecutionPolicy RemotesignedЕсли вы хотите, чтобы ваш профиль PowerShell применялся и к удаленным сеансам, используйте команду:
Invoke-Command -Session $s -FilePath $PROFILEЕсли вы хотите игнорировать настройки профиля при запуске сеанса PowerShell, используйте
-NoProfileвариант при запуске
PowerShell.exeили
pwsh.exe

