Philip Wiki

Персональный wiki-сайт

Инструменты пользователя

Инструменты сайта


docs:powershell:profile

Профиль (лучшие практики)

Страница посвящена настройкам профиля PowerShell. Про лучшие практики я конечно махнул, это скорее про мои лучшие практики. :-)

Итак, powershell-профилем называют файл конфигурации, который содержит базовые настройки и, например, пользовательские функции. Проще говоря, это ps1-файл, который загружается при открытии сессии powershell.

1. Создание профиля

По умолчанию файл профиля не существует. Если вы не создавали его ранее, то давайте сделаем это:

  1. Создаём новый профиль пользователя
    New-Item $profile -ItemType File -Force
  2. Чтобы открываем его на редактирование в блокноте
    notepad.exe $profile

Дополнительно

Для выполнения данных операций консоль должна быть открыта с правами администратора

Если планируем запускать из профиля скрипты или использовать их в консоли, то активируем опцию запуска скриптов без подписи:

Set-ExecutionPolicy RemoteSigned

Устанавливаем флаг «доверенный» на репозиторий «PSGallery» чтобы каждый раз не подтверждать установку из него:

Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted

2. Winget

Подразумевается, что нами используется крайняя сборка Windows, где winget идёт из коробки. С его помощью мы установим нужное нам ПО. В ином случае рекомендую ознакомиться.

3. Устанавливаем нужное

  1. Заменяем (точнее добавляем рядом) устаревший Windows PowerShell на PowerShell
  2. Устанавливаем «стероиды» (oh-my-posh) для консоли
  3. Опционально (т.к. опять же в крайних сборках Windows установлен из коробки) устанавливаем терминал
winget install Microsoft.PowerShell
winget install JanDeDobbeleer.OhMyPosh
# winget install  Microsoft.WindowsTerminal

4. Настройки

Устанавливаем необходимые модули:

Install-Module PSReadLine -Scope AllUsers -Force
Install-Module -Name CompletionPredictor -Repository PSGallery -Scope AllUsers

Теперь открываем профиль на редактирование:

notepad.exe $profile

5. Профиль

# активируем автодополнения команд winget https://github.com/microsoft/winget-cli/blob/master/doc/Completion.md
Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock {
    param($wordToComplete, $commandAst, $cursorPosition)
        [Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new()
        $Local:word = $wordToComplete.Replace('"', '""')
        $Local:ast = $commandAst.ToString().Replace('"', '""')
        winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object {
            [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
        }
}
 
# активируем поддержку прогнозирования и подстановки
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -EditMode Windows
 
Import-Module -Name CompletionPredictor
 
# активируем oh-my-posh с темой slim
# Get-PoshThemes - при желании посмотреть доступные
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/slim.omp.json" | Invoke-Expression

docs/powershell/profile.txt · Последнее изменение: 29.09.2023 16:53 — philip

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki