Partilhar via


Personalizar o seu ambiente de shell

Um perfil do PowerShell é um script que é executado quando o PowerShell é iniciado. Você pode usar o perfil para personalizar o ambiente. É possível:

  • Adicionar aliases, funções e variáveis
  • Módulos de carga
  • Criar unidades do PowerShell
  • Executar comandos arbitrários
  • Alterar configurações de preferência

Colocar essas configurações em seu perfil garante que elas estejam disponíveis sempre que você iniciar o PowerShell em seu sistema.

Observação

Para executar scripts no Windows, a política de execução do PowerShell precisa ser definida como RemoteSigned no mínimo. As políticas de execução não se aplicam ao macOS e Linux. Para obter mais informações, consulte about_Execution_Policy.

A variável $PROFILE

A variável automática $PROFILE armazena os caminhos para os perfis do PowerShell disponíveis na sessão atual.

Há quatro perfis possíveis disponíveis para dar suporte a escopos de usuário diferentes e hosts PowerShell diferentes. Os caminhos totalmente qualificados para cada script de perfil são armazenados nas seguintes propriedades de membro do $PROFILE.

  • AllUsersAllHosts
  • AllUsersCurrentHost
  • CurrentUserAllHosts
  • CurrentUserCurrentHost

Você pode criar scripts de perfil que são executados para todos os usuários ou apenas para um usuário, o CurrentUser. perfis de CurrentUser são armazenados no caminho do diretório base do usuário. O local varia dependendo do sistema operacional e da versão do PowerShell que você usa.

Por padrão, fazer referência à variável $PROFILE retorna o caminho para o perfil "Usuário atual, host atual". O caminho dos outros perfis pode ser acessado através das propriedades da variável $PROFILE. O comando a seguir mostra os locais de perfil padrão no Windows.

PS> $PROFILE | Select-Object *
AllUsersAllHosts       : C:\Program Files\PowerShell\7\profile.ps1
AllUsersCurrentHost    : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts    : C:\Users\username\Documents\PowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Length                 : 69

O comando a seguir mostra os locais de perfil padrão no Ubuntu Linux.

$PROFILE | Select-Object *

AllUsersAllHosts       : /opt/microsoft/powershell/7/profile.ps1
AllUsersCurrentHost    : /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts    : /home/username/.config/powershell/profile.ps1
CurrentUserCurrentHost : /home/username/.config/powershell/Microsoft.PowerShell_profile.ps1
Length                 : 67

Também há perfis que são executados para todos os hosts do PowerShell ou hosts específicos. O script de perfil para cada host do PowerShell tem um nome exclusivo para esse host. Por exemplo, o nome do arquivo para o Host de Console padrão no Windows ou o aplicativo de terminal padrão em outras plataformas é Microsoft.PowerShell_profile.ps1. Para Visual Studio Code (VS Code), o nome do arquivo é Microsoft.VSCode_profile.ps1.

Para obter mais informações, consulte about_Profiles.

Como criar o seu perfil pessoal

Quando você instala o PowerShell pela primeira vez em um sistema, os arquivos de script de perfil e os diretórios aos quais pertencem não existem. O comando a seguir cria o arquivo de script de perfil "Usuário atual, host atual" se ele não existir.

if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force
}

O parâmetro Force do cmdlet New-Item cria as pastas necessárias quando elas não existem. Depois de criar o arquivo de script, você pode usar seu editor favorito para personalizar seu ambiente de shell.

Adicionar personalizações ao seu perfil

Os artigos anteriores falaram sobre o uso de conclusão de guias , preditores de comando , e aliases . Esses artigos mostraram os comandos usados para carregar os módulos necessários, criar completadores personalizados, definir ligações de teclas e outras configurações. Estas personalizações são do tipo que queres ter disponíveis em todas as sessões interativas PowerShell. O script de perfil é o local para essas configurações.

A maneira mais simples de editar seu script de perfil é abrir o arquivo em seu editor de código favorito. Por exemplo, o comando a seguir abre o perfil no VS Code.

code $PROFILE

Você também pode usar notepad.exe no Windows, vi no Linux ou em qualquer outro editor de texto.

O script de perfil a seguir tem exemplos para muitas das personalizações mencionadas nos artigos anteriores. Você pode usar qualquer uma dessas configurações em seu próprio perfil.

## Map PSDrives to other registry hives
if (!(Test-Path HKCR:)) {
    $null = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
    $null = New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
}

## Customize the prompt
function prompt {
    $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
    $principal = [Security.Principal.WindowsPrincipal] $identity
    $adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator

    $prefix = if (Test-Path Variable:/PSDebugContext) { '[DBG]: ' } else { '' }
    if ($principal.IsInRole($adminRole)) {
        $prefix = "[ADMIN]:$prefix"
    }
    $body = 'PS ' + $PWD.path
    $suffix = $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
    "${prefix}${body}${suffix}"
}

## Create $PSStyle if running on a version older than 7.2
## - Add other ANSI color definitions as needed

if ($PSVersionTable.PSVersion.ToString() -lt '7.2.0') {
    # define escape char since "`e" may not be supported
    $esc = [char]0x1b
    $PSStyle = [pscustomobject]@{
        Foreground = @{
            Magenta = "${esc}[35m"
            BrightYellow = "${esc}[93m"
        }
        Background = @{
            BrightBlack = "${esc}[100m"
        }
    }
}

## Set PSReadLine options and keybindings
$PSROptions = @{
    ContinuationPrompt = '  '
    Colors             = @{
        Operator         = $PSStyle.Foreground.Magenta
        Parameter        = $PSStyle.Foreground.Magenta
        Selection        = $PSStyle.Background.BrightBlack
        InLinePrediction = $PSStyle.Foreground.BrightYellow + $PSStyle.Background.BrightBlack
    }
}
Set-PSReadLineOption @PSROptions
Set-PSReadLineKeyHandler -Chord 'Ctrl+f' -Function ForwardWord
Set-PSReadLineKeyHandler -Chord 'Enter' -Function ValidateAndAcceptLine

## Add argument completer for the dotnet CLI tool
$scriptblock = {
    param($wordToComplete, $commandAst, $cursorPosition)
    dotnet complete --position $cursorPosition $commandAst.ToString() |
        ForEach-Object {
            [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
        }
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock

Este script de perfil fornece exemplos para a seguinte personalização:

  • Adiciona dois novos PSDrives para os outros hives de registro raiz.
  • Cria um prompt personalizado que muda se estiveres executando em uma sessão elevada.
  • Configura PSReadLine e adiciona vinculação de chave. As configurações de cor usam o recurso $PSStyle para definir as configurações de cor ANSI.
  • Adiciona a funcionalidade de autocompletar para a ferramenta da CLI do dotnet. A ferramenta fornece parâmetros para ajudar a resolver os argumentos de linha de comando. O bloco de script para Register-ArgumentCompleter usa esse recurso para fornecer a conclusão da guia.