about_Profiles

Descrição breve

Descreve como criar e usar um perfil do PowerShell.

Descrição longa

Você pode criar um perfil do PowerShell para personalizar seu ambiente e adicionar elementos específicos da sessão a cada sessão do PowerShell iniciada.

Um perfil do PowerShell é um script executado quando o PowerShell é iniciado. Você pode usar o perfil como um script de inicialização para personalizar seu ambiente. Você pode adicionar comandos, aliases, funções, variáveis, módulos, unidades do PowerShell e muito mais. Você também pode adicionar outros elementos específicos da sessão ao seu perfil para que eles estejam disponíveis em todas as sessões sem precisar importá-los ou recriá-los.

O PowerShell dá suporte a vários perfis para usuários e programas host. No entanto, ele não cria os perfis para você.

Tipos de perfil e locais

O PowerShell dá suporte a vários arquivos de perfil com escopo para usuários e hosts do PowerShell. Você pode ter qualquer um ou todos esses perfis em seu computador.

O console do PowerShell dá suporte aos seguintes arquivos de perfil básicos. Esses caminhos de arquivo são os locais padrão.

  • Todos os usuários, todos os hosts
    • Windows - $PSHOME\Profile.ps1
    • Linux – /opt/microsoft/powershell/7/profile.ps1
    • macOS – /usr/local/microsoft/powershell/7/profile.ps1
  • Todos os usuários, host atual
    • Windows - $PSHOME\Microsoft.PowerShell_profile.ps1
    • Linux – /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
    • macOS – /usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
  • Usuário atual, todos os hosts
    • Windows - $HOME\Documents\PowerShell\Profile.ps1
    • Linux – ~/.config/powershell/profile.ps1
    • macOS – ~/.config/powershell/profile.ps1
  • Usuário atual, host atual
    • Windows - $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    • Linux – ~/.config/powershell/Microsoft.PowerShell_profile.ps1
    • macOS – ~/.config/powershell/Microsoft.PowerShell_profile.ps1

Observação

No Windows, o Documents local da pasta pode ser alterado pelo redirecionamento de pasta ou pelo OneDrive. Não recomendamos redirecionar a Documents pasta para um compartilhamento de rede ou incluí-la no OneDrive. Redirecionar a pasta pode fazer com que os módulos não sejam carregados e criem erros em seus scripts de perfil. Para obter informações sobre como remover a Documents pasta do gerenciamento do OneDrive, consulte a documentação do OneDrive.

Os scripts de perfil são executados na ordem listada. Isso significa que as alterações feitas no perfil AllUsersAllHosts podem ser substituídas por qualquer um dos outros scripts de perfil. O perfil CurrentUserCurrentHost sempre é executado por último. Na Ajuda do PowerShell, o perfil CurrentUserCurrentHost é o perfil mais frequentemente referido como seu perfil do PowerShell.

Outros programas que hospedam o PowerShell podem dar suporte a seus próprios perfis. Por exemplo, o Visual Studio Code (VS Code) dá suporte aos seguintes perfis específicos do host.

  • Todos os usuários, Host atual - $PSHOME\Microsoft.VSCode_profile.ps1
  • Usuário atual, host atual - $HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1

Os caminhos de perfil incluem as seguintes variáveis:

  • A $PSHOME variável armazena o diretório de instalação do PowerShell
  • A $HOME variável armazena o diretório inicial do usuário atual

A variável $PROFILE

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

Para exibir um caminho de perfil, exiba o valor da $PROFILE variável. Você também pode usar a $PROFILE variável em um comando para representar um caminho.

A $PROFILE variável armazena o caminho para o perfil "Usuário atual, host atual". Os outros perfis são salvos nas propriedades de nota da $PROFILE variável.

Por exemplo, a $PROFILE variável tem os seguintes valores no console do Windows PowerShell.

  • Usuário atual, host atual - $PROFILE
  • Usuário atual, host atual - $PROFILE.CurrentUserCurrentHost
  • Usuário atual, todos os hosts - $PROFILE.CurrentUserAllHosts
  • Todos os usuários, host atual - $PROFILE.AllUsersCurrentHost
  • Todos os usuários, todos os hosts - $PROFILE.AllUsersAllHosts

Como os $PROFILE valores da variável mudam para cada usuário e em cada aplicativo host, certifique-se de exibir os valores das variáveis de perfil em cada aplicativo host do PowerShell que você usa.

Para ver os valores atuais da $PROFILE variável, digite:

$PROFILE | Select-Object *

Você pode usar a $PROFILE variável em muitos comandos. Por exemplo, o comando a seguir abre o perfil "Usuário Atual, Host Atual" no Bloco de Notas:

notepad $PROFILE

O comando a seguir determina se um perfil "Todos os usuários, todos os hosts" foi criado no computador local:

Test-Path -Path $PROFILE.AllUsersAllHosts

Como criar um perfil

Para criar um perfil do PowerShell, use o seguinte formato de comando:

if (!(Test-Path -Path <profile-name>)) {
  New-Item -ItemType File -Path <profile-name> -Force
}

Por exemplo, para criar um perfil para o usuário atual no aplicativo host do PowerShell atual, use o seguinte comando:

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

Nesse comando, a if instrução impede que você substitua um perfil existente. Substitua o $PROFILE valor da variável pelo caminho para o arquivo de perfil que você deseja criar.

Observação

Para criar perfis "Todos os usuários" no Windows Vista e versões posteriores do Windows, inicie o PowerShell com a opção Executar como administrador .

Como editar um perfil

Você pode abrir qualquer perfil do PowerShell em um editor de texto, como o Bloco de Notas.

Para abrir o perfil do usuário atual no aplicativo host do PowerShell atual no Bloco de Notas, digite:

notepad $PROFILE

Para abrir outros perfis, especifique o nome do perfil. Por exemplo, para abrir o perfil para todos os usuários de todos os aplicativos host, digite:

notepad $PROFILE.AllUsersAllHosts

Para aplicar as alterações, salve o arquivo de perfil e reinicie o PowerShell.

Como escolher um perfil

Se você usar vários aplicativos host, coloque os itens usados em todos os aplicativos host em seu $PROFILE.CurrentUserAllHosts perfil. Coloque itens específicos de um aplicativo host, como um comando que define a cor da tela de fundo de um aplicativo host, em um perfil específico desse aplicativo host.

Se você for um administrador que está personalizando o PowerShell para muitos usuários, siga estas diretrizes:

  • Armazene os itens comuns no $PROFILE.AllUsersAllHosts perfil
  • Armazene itens específicos de um aplicativo host em $PROFILE.AllUsersCurrentHost perfis específicos do aplicativo host
  • Armazenar itens para usuários específicos nos perfis específicos do usuário

Verifique a documentação do aplicativo host para qualquer implementação especial de perfis do PowerShell.

Como usar um perfil

Muitos dos itens que você cria no PowerShell e a maioria dos comandos que você executa afetam apenas a sessão atual. Quando você encerra a sessão, os itens são excluídos.

Os comandos e itens específicos da sessão incluem variáveis do PowerShell, variáveis de ambiente, aliases, funções, comandos e módulos do PowerShell que você adiciona à sessão.

Para salvar esses itens e disponibilizá-los em todas as sessões futuras, adicione-os a um perfil do PowerShell.

Outro uso comum para perfis é salvar funções, aliases e variáveis usados com frequência. Ao salvar os itens em um perfil, você pode usá-los em qualquer sessão aplicável sem recriá-los.

Como iniciar um perfil

Quando você abre o arquivo de perfil, ele fica em branco. No entanto, você pode preenchê-lo com as variáveis, aliases e comandos que você usa com frequência.

Aqui estão algumas sugestões para você começar.

Adicionar uma função que lista aliases para qualquer cmdlet

function Get-CmdletAlias ($cmdletname) {
  Get-Alias |
    Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
      Format-Table -Property Definition, Name -AutoSize
}

Personalizar seu console

function CustomizeConsole {
  $hosttime = (Get-ChildItem -Path $PSHOME\pwsh.exe).CreationTime
  $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
  $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
  Clear-Host
}
CustomizeConsole

Adicionar um prompt personalizado do PowerShell

function Prompt {
    $env:COMPUTERNAME + "\" + (Get-Location) + "> "
}

Para obter mais informações sobre o prompt do PowerShell, consulte about_Prompts.

Para outros exemplos de perfil, consulte Personalizando seu ambiente de shell.

O parâmetro NoProfile

Para iniciar o PowerShell sem perfis, use o parâmetro NoProfile de pwsh.exe, o programa que inicia o PowerShell.

Para começar, abra um programa que possa iniciar o PowerShell, como o Cmd.exe ou o próprio PowerShell. Você também pode usar a caixa de diálogo Executar no Windows.

Tipo:

pwsh -NoProfile

Para obter uma lista completa dos parâmetros de pwsh.exe, digite:

pwsh -?

Perfis e Política de Execução

A política de execução do PowerShell determina, em parte, se você pode executar scripts e carregar arquivos de configuração, incluindo os perfis. A política de execução restrita é o padrão. Ele impede que todos os scripts sejam executados, incluindo os perfis. Se você usar a política "Restrita", o perfil não será executado e seu conteúdo não será aplicado.

Um Set-ExecutionPolicy comando define e altera sua política de execução. é um dos poucos comandos que se aplica em todas as sessões do PowerShell porque o valor é salvo no registro. Você não precisa configurá-lo ao abrir o console e não precisa armazenar um Set-ExecutionPolicy comando em seu perfil.

Perfis e sessões remotas

Os perfis do PowerShell não são executados automaticamente em sessões remotas, portanto, os comandos que os perfis adicionam não estão presentes na sessão remota. Além disso, a variável automática não é preenchida $PROFILE em sessões remotas.

Para executar um perfil em uma sessão, use o cmdlet Invoke-Command .

Por exemplo, o comando a seguir executa o perfil "Usuário atual, host atual" do computador local na sessão do $s.

Invoke-Command -Session $s -FilePath $PROFILE

O comando a seguir executa o perfil "Usuário atual, host atual" do computador remoto na sessão em $s. Como a $PROFILE variável não é preenchida, o comando usa o caminho explícito para o perfil. Usamos o operador de origem de ponto para que o perfil seja executado no escopo atual no computador remoto e não em seu próprio escopo.

Invoke-Command -Session $s -ScriptBlock {
  . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

Depois de executar este comando, os comandos que o perfil adiciona à sessão estão disponíveis em $s.

Confira também