Melhorando o PowerShell 📟

lucasfrazao

Lucas Frazao

Posted on November 25, 2024

Melhorando o PowerShell 📟

Olá, me chamo Lucas Frazão. Trabalho como desenvolvedor de software (SWE) há 5 anos.

Nesse artigo quero apresentar uma alternativa para customizar e melhorar o seu terminal PowerShell, mas antes, para quem é esse post?

  • Usuários de Windows;
  • Usuários de Windows que não têm interesse ou não gostam de WSL (Windows Subsystem for Linux);
  • Pessoas que querem conhecer um pouco mais das capacidades do PowerShell.

Vamos lá.

O que é PowerShell?

O PowerShell é uma CLI (command-line interface) cross-plataform, simplificando, é um aplicativo de terminal que roda em qualquer sistema operacional (OS), windows, linux ou macOS. Caso ainda não conheça o PowerShell, tudo bem. Você pode acessar a documentação oficial da microsoft através do link: https://learn.microsoft.com/en-gb/powershell/ ou conferir um vídeo postado no youtube no canal da Microsoft Developer: https://www.youtube.com/watch?v=nahtw_csB5w. O vídeo está em inglês, porém, por se tratar de um vídeo didático, a dinâmica da fala faz a tradução automática do youtube funcionar muito bem.

Toda máquina com sistema operacional Windows já vem com o PowerShell instalado, o qual você pode acessar através do menu do windows e pesquisar por "powershell".

searching powershell

Entretanto, como nosso foco é melhorar a experiência no uso de CLI no windows, vamos dividir em etapas essa melhoria, assim você consegue chegar em um resultado mais próximo do desejado entendendo o que está sendo feito.

Instalando NerdFonts

Em primeiro lugar, vamos instalar uma fonte com glifos porque mais tarde queremos utilizar essa feature.

Glifos referem-se a formas, designs, representações específicas de caracteres em uma fonte ou um caracter codificado. Na prática, são caracteres que conseguem representar letras, números, símbolos e até mesmo ícones.

Acesse nerdfonts.com, selecione uma fonte que te agrade mais e clique em "Download". Logo após finalizar o download, vá até a pasta onde o zip foi baixado, descompacte o mesmo e em seguida instale todas as fontes que foram baixadas.

install nerd font
fonte da imagem: https://support.microsoft.com/en-us/office/add-a-font-b7c5f17c-4426-4b53-967f-455339c564c1

Após baixar e instalar a fonte escolhida, pressione Ctrl + , -> perfis -> padrões -> aparência.

menu additional settings

Após entrar no menu de aparência basta selecionar a fonte que você acabou de baixar e instalar. Lembre-se que para conseguir atingir os mesmos resultados mostrados ao fim desse artigo é importante que você utilize uma fonte com glifos, no nosso contexto, uma fonte baixada do NerdFont.

menu options to change font

Disclaimer: Caso queira utilizar a mesma fonte que eu, escolha por JetBrainsMono Nerd Font.

Preparando CLI

Vamos iniciar baixando o Windows Terminal, que é uma aplicação que permite que você possa executar diferentes terminais em abas diferentes, simplificando bastante, você pode na aba 1 rodar o PowerShell e na aba 2 o windows cmd, por exemplo.
Para baixar, acesse o link Windows Terminal - apps microsoft ou através do menu do windows, pesquisar microsoft store, e então windows terminal. Após isso, basta clicar em download/baixar. Tanto o download quanto a instalação serão realizados.

Para confirmar a instalação, basta acessar o menu do windows e pesquisar por "terminal" e caso tudo tenha ocorrido bem, você verá algo assim:

searching by terminal

Agora, vamos baixar uma versão mais atualizada do PowerShell. Você pode se perguntar nesse momento, "mas ele já não é nativo do windows?", sim, mas o PowerShell 7 é a versão mais recente e melhorada do Windows PowerShell. Abaixo, temos um comparativo entre eles e dois links de referência com mais informações.

PowerShell
(Desktop Edition)
PowerShell
(Core Edition)
Iterações Versões 1.0, 2.0, 3.0, 4.0, 5.0 e 5.1 Versões 6.0 e 7
Compatibilidade Compativel somente com Windows Multi plataforma, com suporte para Linux e macOS, distros como Ubuntu, Fedora e CentOS
Runtime .Net Framework runtime $PSVersionTable.PSEdition definida para desktop. .Net Core runtime $PSVersionTable.PSEdition definida como core
Atualização de políticas Apenas correções de bugs critícos serão lançados. Novas features e correções de bugs serão lançadas.
Pacote Vem como componente pré instalado no Windows através do WMF. Aplicação com código aberto, pode ser instalado via MSI, ZIP ou PKG no macOS.
Ambiente de script suportado Windows PowerShell Integrated Scription Environment (ISE) Visual Studio Code (VSCode) com extensão do PowerShell

Referências: Differences between Windows PowerShell 5.1 and PowerShell 7.x e # Difference Between Windows PowerShell And PowerShell Core.

Para download do PowerShell 7, seguimos as mesmas etapas do download anterior. Além do acesso via windows, é possível acessar a microsoft store via browser: https://apps.microsoft.com/detail/9mz1snwt0n5d.

Um breve disclaimer... a partir de agora sempre que você ler "PowerShell", estaremos falando do PowerShell 7.x.

Após a instalação do PowerShell, finalizamos a primeira etapa e você notará a diferença visual entre os dois.

tab Windows powershelltab powershell
Windows PowerShell v5.1 - PowerShell 7.x

Definindo CLI Default

Agora vamos alterar as políticas de execução do PowerShell e defini-lo como CLI default. Portanto, alguns comandos serão executados com o terminal aberto como administrador, pois estamos lidando com configurações de "nível elevado", ou seja, configurações que um usuário rotineiro/convencional e não técnico normalmente não faria.

Assim, vamos iniciar verificando como estão as políticas de execução, abra o Windows Terminal como administrador, selecione o Powershell 7, no menu de opções (conforme print) e execute o comando:

Menu options profiles

Get-ExecutionPolicy
Enter fullscreen mode Exit fullscreen mode

Caso o retorno seja diferente de RemoteSigned, execute o comando abaixo para definirmos a política como RemoteSigned:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Enter fullscreen mode Exit fullscreen mode

Link com explicação das políticas de execução: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-7.4#-executionpolicy

Excelente! Agora, reinicie o Windows Terminal para continuarmos com as configurações. Então, pressione Ctrl + , e depois, no canto inferior esquerdo, selecione "Open JSON file".
Open JSON file

Feito isso, seu arquivo de configuração do windows terminal será aberto no seu editor de código padrão (ou notepad). Logo em seguida, vamos verificar qual o id do Powershell para definir como perfil padrão.
Para facilitar, você pode clicar Ctrl + F e pesquisar por Windows.Terminal.PowershellCore, o resultado esperado é algo próximo à:

evidence powershell

Copie o guid do Windows.Terminal.PowershellCore e vamos procurar por "defaultProfile", esse campo define qual CLI é a padrão do seu terminal.
evidence default profile

Substitua o valor defaultProfile pelo guid que acabamos de copiar do Powershell. Salve o arquivo, reinicie o terminal e será possível ver que o Windows Terminal irá iniciar já com o perfil do PowerShell selecionado.

new tab powershell

Instalando o Oh My Posh

Para customização visual do PowerShell utilizaremos o Oh My Posh, que é um prompt customizado para qualquer shell e oferece temas pré "montados".

Execute o comando:

winget install JanDeDobbeleer.OhMyPosh -s winget
Enter fullscreen mode Exit fullscreen mode

Concorde com os termos e esse comando irá instalar e executar o oh-my-posh.exe e adicionar seu tema mais recente.

Agora execute o comando :

// Para abrir com o notepad
notepad $PROFILE

// Para abrir com o Visual Studio Code (recomendo)
code $PROFILE
Enter fullscreen mode Exit fullscreen mode

Você pode substituir o notepad e code também pelo seu editor. Esse comando irá abrir o seu arquivo de perfil do PowerShell.

==Caso você receba um erro relacionado ao caminho chamado, execute o comando:==

New-Item -Path $PROFILE -Type File -Force
Enter fullscreen mode Exit fullscreen mode

Esse comando irá criar um arquivo vazio com o nome de $PROFILE.

Após abrir o seu arquivo de perfil, adicione a linha:

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression
Enter fullscreen mode Exit fullscreen mode

Esse código define que, ao iniciar o PowerShell, o Oh My Posh será automaticamente carregado e o tema da sua linha de comando será configurado como jandedobbeleer.

==Caso você receba erro de script ao definir a nova regra para as instâncias do PowerShell, abra o terminal como administrador e execute o comando abaixo. Isso irá definir sua execução do PowerShell como irrestrita.==

Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Enter fullscreen mode Exit fullscreen mode

Link com explicação das políticas de execução: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-7.4#-executionpolicy

Feito isso, reinicie o seu Windows Terminal e ao abri-lo, você já irá sair do visual "padrão" para algo parecido com:
powershell using oh my posh

Caso você queria utilizar um tema diferente, você pode acessar o site do Oh My Posh Themes ou executar o comando:

Get-PoshThemes
Enter fullscreen mode Exit fullscreen mode

Esse comando irá listar todos os temas disponíveis. Para alterar, basta acessar o arquivo de perfil, conforme ensinado anteriormente e substituir a palavra jandedobbeleer pelo nome do tema selecionado.

No exemplo abaixo alteramos o tema de jandedobbeleer para spaceship.

Antes:

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression
Enter fullscreen mode Exit fullscreen mode

Depois:

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\spaceship.omp.json" | Invoke-Expression
Enter fullscreen mode Exit fullscreen mode

É possível fazer alterações em níveis mais granulares, mas é altamente recomendado que antes disso leia a documentação oficial https://ohmyposh.dev/docs/installation/customize.

Minha recomendação de customização é testar o background acrílico. Para isso, basta pressionar Ctrl + , em seguida Perfis -> Padrões -> Aparência, em seguide habilite a opção "Habilitar material acrílico", conforme abaixo:

menu to change translucent

Antes:
powershell after acrylic

Depois:

powershell before acrylic

Adicionando Terminal-Icons

O Terminal-Icons é um módulo do PowerShell que adiciona ícones aos arquivos e pastas ao trafegar pelo terminal.

Para instalar o Terminal-Icon execute o comando:

Install-Module -Name Terminal-Icons -Repository PSGallery
Enter fullscreen mode Exit fullscreen mode

Adicione ao arquivo de perfil o código abaixo, que é responsável pela importação do módulo.

Import-Module -Name Terminal-Icons
Enter fullscreen mode Exit fullscreen mode

Caso não se lembre como acessar o arquivo de perfil, basta executar code $PROFILE.

Você terá algo parecido com:
profile file

Após fazer isso, reinicie o seu terminal e execute o comando dir e será possível ver o Terminal-Icons em ação.
terminal running dir command

Para customizações e alterações mais específicas, acesse o link da documentação: https://github.com/devblackops/Terminal-Icons.

Obs.: Se ao invés dos ícones customizados, semelhantes ao print acima, você estiver visualizando um ícone 󰛋, basta alterar a fonte do seu Windows Terminal para uma fonte baixada do nerdfonts.com, conforme citado no início desse artigo.

Bônus - Adicionando o Posh-Git

O Posh-Git é um módulo que integra o Git com o PowerShell, provendo informações e funcionalidades adicionais relacionadas ao git. É interessante que leia a documentação oficial do Posh-Git para entender a melhor forma de aumentar a sua produtividade ao utilizá-lo. Link da documentação: https://github.com/dahlbyk/posh-git#overview.

Lembrando que, para utilizar o Posh-Git, antes é necessário que tenha instalado o git em sua máquina.

Abra o terminal como administrador e execute o comando abaixo para realizar a instalação:

PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force
Enter fullscreen mode Exit fullscreen mode

Adicione o trecho abaixo ao seu arquivo de perfil.

Import-Module posh-git
Enter fullscreen mode Exit fullscreen mode

Por fim, caso queira customizar ainda mais a aparência do seu Windows Terminal, basta utilizar o menu aparência que vimos nesse artigo e deixar sua criatividade te conduzir. Lembre-se que algumas configurações podem afetar negativamente o seu uso da ferramenta.
Bom, passamos por etapas importantes para a customização do PowerShell, atualização e configuração. Agora o seu PowerShell está bem diferente de como ele começou, porém com seu toque. Explore as documentações e referências para customizar os comandos do Posh-Git, criar aliases e explorar mais funcionalidades dos módulos instalados.
Sinta-se livre para deixar um comentário ou me enviar um feedback do artigo.

💖 💪 🙅 🚩
lucasfrazao
Lucas Frazao

Posted on November 25, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Melhorando o PowerShell 📟
programming Melhorando o PowerShell 📟

November 25, 2024

Improving PowerShell 📟
programming Improving PowerShell 📟

November 25, 2024

How am I using AI to get the best of myself
programming How am I using AI to get the best of myself

December 28, 2023