Поиск по сайту:

Файлы профиля 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 $profile
  • PowerShell 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-Host

cmdlet в конец файла вашего профиля, чтобы очистить консоль. Сохраните файл профиля как 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

Статьи по данной тематике