Como usar o módulo PSReadLine para turbinar o terminal PowerShell
1. Introdução ao PSReadLine
O PSReadLine é um módulo essencial para qualquer profissional que utiliza o PowerShell de forma intensiva. Ele substitui a experiência padrão de edição de linha de comando por um ambiente muito mais produtivo, com recursos como histórico persistente, busca incremental, preenchimento automático inteligente (Predictive IntelliSense) e atalhos de teclado avançados.
Sem o PSReadLine, o terminal PowerShell oferece apenas funcionalidades básicas de navegação e edição. Com ele, você ganha recursos que aumentam significativamente a velocidade de execução de tarefas repetitivas.
Para verificar a versão instalada do PSReadLine, execute:
Get-Module PSReadLine -ListAvailable | Select-Object Name, Version
Para atualizar para a versão mais recente:
Update-Module PSReadLine
2. Instalação e configuração inicial
O PSReadLine já vem instalado por padrão no PowerShell 5.0 ou superior, mas você pode instalá-lo manualmente via PowerShell Gallery:
Install-Module PSReadLine -Force -AllowClobber
Para que o módulo seja carregado automaticamente em toda sessão, edite seu perfil do PowerShell. O arquivo de perfil geralmente está em:
notepad $PROFILE
Caso o arquivo não exista, crie-o com:
New-Item -Path $PROFILE -ItemType File -Force
Adicione ao perfil as seguintes linhas:
Import-Module PSReadLine
Set-PSReadLineOption -EditMode Windows
3. Personalização de histórico e busca
O histórico persistente é um dos recursos mais valiosos do PSReadLine. Ele salva todos os comandos executados entre sessões, permitindo busca rápida.
Para configurar o histórico:
Set-PSReadLineOption -MaximumHistoryCount 10000
Set-PSReadLineOption -HistorySaveStyle SaveIncrementally
Os atalhos de busca incremental são extremamente úteis:
- Ctrl+R: Busca reversa no histórico (digite parte do comando)
- Ctrl+S: Busca direta no histórico
Para filtrar comandos sensíveis do histórico (como senhas):
Set-PSReadLineOption -AddToHistoryHandler {
param($line)
$sensitive = @('password', 'secret', 'token')
$sensitive -notcontains ($line -split ' ')[0]
}
4. Autocomplete inteligente com Predictive IntelliSense
O Predictive IntelliSense é o recurso que mais turbina a produtividade. Ele sugere comandos completos baseados no seu histórico e contexto atual.
Para ativar:
Set-PSReadLineOption -PredictionSource History
Para usar sugestões baseadas em histórico e comandos recentes:
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Personalize as cores das sugestões:
Set-PSReadLineOption -Colors @{
InlinePrediction = '#808080'
Prediction = '#808080'
PredictionSelected = '#1E90FF'
}
5. Atalhos de edição e navegação no terminal
O PSReadLine oferece atalhos que tornam a edição de comandos muito mais ágil:
Navegação rápida:
- Ctrl+LeftArrow: Move para o início da palavra anterior
- Ctrl+RightArrow: Move para o início da próxima palavra
- Home: Início da linha
- End: Fim da linha
Edição de texto:
- Ctrl+Backspace: Deleta palavra anterior
- Ctrl+Delete: Deleta próxima palavra
- Ctrl+W: Deleta palavra anterior (similar ao bash)
- Ctrl+U: Deleta toda a linha
- Ctrl+K: Deleta do cursor até o fim da linha
Copiar e colar:
- Ctrl+Shift+C: Copiar seleção
- Ctrl+Shift+V: Colar texto
Undo e Redo:
- Ctrl+Z: Desfazer última ação
- Ctrl+Y: Refazer ação desfeita
6. Criação de funções e aliases personalizados
Você pode criar funções no perfil do PowerShell para comandos frequentes. Exemplo prático:
function Deploy-Project {
param([string]$Environment = "dev")
Write-Host "Iniciando deploy para $Environment..."
git pull origin main
dotnet build --configuration Release
dotnet publish -c Release -o ./publish
Write-Host "Deploy concluído!" -ForegroundColor Green
}
Para criar aliases com PSReadLine:
Set-Alias -Name dp -Value Deploy-Project
Set-Alias -Name gs -Value Get-Service
Outros exemplos úteis para o perfil:
function Get-SystemReport {
Get-ComputerInfo | Select-Object WindowsVersion, WindowsBuildLabEx, BiosManufacturer, BiosVersion
}
function Get-LastCommands {
Get-Content (Get-PSReadLineOption).HistorySavePath | Select-Object -Last 20
}
7. Integração com outras ferramentas do ecossistema PowerShell
O PSReadLine pode ser combinado com outras ferramentas para criar fluxos de trabalho poderosos.
Exportando comandos executados para CSV:
function Export-CommandHistory {
param([string]$Path = ".\command_history.csv")
Get-Content (Get-PSReadLineOption).HistorySavePath |
Select-Object @{Name="Command";Expression={$_}},
@{Name="Timestamp";Expression={(Get-Date)}} |
Export-Csv -Path $Path -NoTypeInformation
}
Usando com scripts de agendamento:
Register-ScheduledJob -Name "BackupLogs" -ScriptBlock {
Import-Module PSReadLine
$history = Get-Content (Get-PSReadLineOption).HistorySavePath
$history | Out-File "C:\Logs\command_history_$(Get-Date -Format 'yyyyMMdd').log"
} -Trigger (New-JobTrigger -Daily -At "02:00")
Combinando com histórico do Active Directory:
function Search-ADHistory {
param([string]$SearchTerm)
Get-Content (Get-PSReadLineOption).HistorySavePath |
Where-Object {$_ -match $SearchTerm -and $_ -match "Get-ADUser|Get-ADGroup|Set-ADUser"}
}
8. Dicas avançadas e boas práticas
Configurando temas e cores:
Set-PSReadLineOption -Colors @{
Command = '#FFFF00'
Parameter = '#00FF00'
Variable = '#FF00FF'
String = '#FFA500'
Number = '#00FFFF'
}
Evitando conflitos com outros módulos:
Sempre carregue o PSReadLine antes de outros módulos que modificam o prompt:
# Ordem correta no perfil
Import-Module PSReadLine
Import-Module posh-git # ou outros módulos
Depuração de problemas comuns:
Para verificar se o PSReadLine está funcionando corretamente:
Get-PSReadLineKeyHandler | Out-GridView
Para resetar configurações:
Remove-Module PSReadLine
Import-Module PSReadLine
Otimização de desempenho:
Limite o histórico a um número razoável de entradas:
Set-PSReadLineOption -MaximumHistoryCount 5000
Desabilite recursos não utilizados:
Set-PSReadLineOption -HistoryNoDuplicates
Referências
- Documentação oficial do PSReadLine no Microsoft Learn — Guia completo com todos os comandos, parâmetros e exemplos de uso do módulo
- PowerShell Gallery - PSReadLine — Página oficial para download e instalação do módulo mais recente
- Tutorial: Customizing PowerShell with PSReadLine by Adam Bertram — Guia prático com exemplos avançados de personalização e configuração
- PSReadLine GitHub Repository — Código fonte, issues e contribuições da comunidade para o projeto
- PowerShell Team Blog - PSReadLine 2.0 Features — Anúncio oficial das funcionalidades da versão 2.0, incluindo Predictive IntelliSense
- How to Use PSReadLine for Better PowerShell Productivity - Petri — Artigo técnico com dicas de produtividade e exemplos de configuração
- PowerShell Profile Examples and Best Practices - SS64 — Referência para criação e otimização de perfis PowerShell com PSReadLine