Usando PSReadLine no PowerShell

PSReadLine é um daqueles módulos que podem não mostrar imediatamente sua utilidade até o uso regular. Se você usa a linha de comando do PowerShell com frequência, o PSReadLine pode tornar sua vida muito mais fácil. Incluído nas versões do PowerShell desde o Windows PowerShell 5, o PSReadLine continua a adicionar novos recursos e utilitários. Construindo sobre o legado venerável do GNU Readline no mundo Unix, PSReadLine adiciona recursos adicionais à experiência de linha de comando do PowerShell, como edição multilinha, coloração de sintaxe, IntelliSense preditivo, suporte de histórico mais rico e modos de edição alternativos.
Atualizando e carregando PSReadLine
As versões mais relativamente recentes do PowerShell têm uma versão empacotada do PSReadLine. Incluído já no Windows PowerShell 5.0, cada versão subsequente adicionou uma versão mais recente com o PowerShell 7.1 incluído PSReadLine 2.1. Claro, você pode querer aproveitar as vantagens dos recursos mais recentes em versões mais antigas do PowerShell. Caso PSReadLine ainda não tenha sido importado, use Import-Module PSReadLine para começar a usar os recursos imediatamente. Para ter certeza de que está usando a versão mais recente, continue lendo!
A partir do PowerShell 7.0, o PowerShell ignora o carregamento automático do PSReadLine no Windows se um programa leitor de tela for detectado. Atualmente, o PSReadLine não funciona bem com leitores de tela. A renderização e formatação padrão do PowerShell 7.0 no Windows funcionam corretamente. Você pode carregar o módulo manualmente, se necessário.
Windows PowerShell 5.x
Geralmente, há duas etapas para atualizar o PSReadLine com o Windows PowerShell 5.0 ou 5.1. Primeiro, você precisa ter certeza de que está executando a versão 1.6.0 ou superior do PowerShellGet. Para fazer isso, você precisa executar o seguinte comando em uma sessão elevada do Windows PowerShell.
Install-Module -Name PowerShellGet -Force
Em seguida, certifique-se de que todas as sessões do PowerShell estejam fechadas e em um prompt de cmd. exe elevado execute o código a seguir. A razão pela qual ele é executado a partir do cmd. exe é que, por padrão, PSReadLine é carregado e não pode ser atualizado se estiver na memória.
powershell -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"
PowerShell 6.x Core e PowerShell 7
Para atualizar PSReadLine nas versões mais recentes do PowerShell, você pode fazer uma operação semelhante fechando todas as sessões abertas do PowerShell, pwsh. exe, e executando uma sessão elevada de cmd. exe com o seguinte código.
pwsh. exe -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"
Atualizando o PSReadLine instalado da Galeria do PowerShell
Você pode ter instalado PSReadLine a partir da Galeria do PowerShell e, se tiver feito isso, pode executar um dos seguintes comandos para atualizar, dependendo de estar no Windows PowerShell ou PowerShell Core / 7.
# PowerShell powershell -noprofile -command "Update-Module PSReadLine -AllowPrerelease" # PowerShell Core / 7 pwsh. exe -noprofile -command "Update-Module PSReadLine -AllowPrerelease"
Recursos do PSReadLine
O que podemos fazer com PSReadLine? Existem vários recursos muito interessantes que podem ajudá-lo com sua experiência de linha de comando. Abaixo, você verá como vários recursos funcionam na prática.
Coloração da sintaxe
Um exemplo de como a coloração da sintaxe torna a legibilidade da linha de comando muito mais fácil. Veja este exemplo onde você pode ver que a saída é colorida para nomes de variáveis, nomes de funções e operadores de comparação.

Embora esta linha de comando não seja muito longa, há casos em que dividi-la em várias linhas seria muito mais fácil de lidar. Continue lendo para ver como podemos dividir isso em várias linhas, como um editor de código tradicional.
Edição de várias linhas
Usando a mesma série de comandos acima, como dividimos isso em várias linhas? Usando a combinação de teclas padrão Shift-Enter (no Windows), podemos dividir as linhas conforme indicado por > & gt ;.

Você pode usar as teclas de seta para navegar pelo texto e apenas quando estiver pronto para executar o comando, você pode pressionar a tecla Enter para executar. E quando você não tiver certeza de um comando a ser usado? IntelliSense preditivo para o resgate!
IntelliSense preditivo
Primeiro, precisamos habilitar o Predictive IntelliSense. Você pode dizer a ele para usar diferentes tipos de fonte, mas o mais comum é simplesmente seu histórico. Lembre-se de que, até que você tenha um arquivo de histórico com conteúdo criado, isso pode não ser o mais útil, mas depois de um tempo, torna-se útil.
# Isso habilitará a fonte de previsão para IntelliSense Set-PSReadLineOption -PredictionSource 'History' # (Opcional) Altere o cinza mais escuro para um cinza mais claro para compensar os fundos escuros Set-PSReadLineOption -Colors @ {InlinePrediction = ' # 9CA3AF '}
Agora podemos testar isso usando o mesmo comando que acabamos de executar. Você pode ver que após digitar Get já vemos o comando oferecido para preenchimento. Você pode usar a seta para a direita (padrão) para aceitar a seleção.

Arquivo de histórico PSReadLine
Já que falamos sobre o arquivo de histórico, pode ser útil saber onde este arquivo está realmente armazenado. O conteúdo de cada comando está em uma nova linha, sem dados adicionais em um formato simples.
- Windows – $ env: APPDATA \\ Microsoft \\ Windows \\ PowerShell \\ PSReadLine
- Linux – $ env: XDG_DATA_HOME / powershell / PSReadLine ou $ env: HOME / . local / share / powershell / PSReadLine
Esteja atento! Ao usar cmdlets como ConvertTo-SecureString, as senhas podem ser armazenadas no arquivo de histórico.
Conclusão
PSReadLine é um módulo muito útil para aprimorar sua experiência de linha de comando. Com edição multilinha, destaque de sintaxe e a recente adição do Predictive IntelliSense, é um complemento indispensável para qualquer kit de ferramentas de administradores de sistema!
Nenhum comentário