Dica de PowerShell: domine o histórico de cmdlets do PowerShell com o PSReadLine

O PowerShell é uma ferramenta poderosa para administradores e programadores, mas as tarefas repetitivas podem atrasá-lo. Ao gerir o histórico de cmdlets e tirar partido das funcionalidades do PSReadLine, pode otimizar o seu fluxo de trabalho, poupar tempo e aumentar a produtividade. Este guia irá mostrar-lhe dicas práticas e cenários para tirar o máximo partido do histórico de cmdlets do PowerShell e do PSReadLine.


Porque é importante gerir o histórico de cmdlets

Imagine executar repetidamente uma sequência complexa de comandos ou resolver problemas de um script que abrange várias linhas. Em vez de voltar a escrever comandos ou procurar em scripts antigos, pode aceder ao histórico de cmdlets para uma reutilização rápida. Com o PSReadLine, pode ir ainda mais longe personalizando a sua experiência e ativando o IntelliSense preditivo.


Aceder ao histórico de cmdlets

O PowerShell armazena automaticamente o histórico de comandos num ficheiro, facilitando a sua consulta ou edição. Eis como pode aceder-lhe:

Localização do ficheiro de histórico de cmdlets

O ficheiro de histórico de cmdlets encontra-se em:
C:\Users\%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine

Passos para gerir o histórico de cmdlets

  1. Localizar o ficheiro
    Abra a pasta e encontre o ficheiro chamado ConsoleHost_history.txt.
  2. Editar o ficheiro
    Use qualquer editor de texto (por exemplo, o Bloco de Notas ou o VS Code) para adicionar, remover ou modificar comandos.
  3. Criar um atalho
    Crie um atalho para o ficheiro no ambiente de trabalho para um acesso rápido.

Caso de uso comum

Um cenário típico envolve a reutilização de uma sequência de comandos para a manutenção do servidor. Por exemplo, se executa frequentemente comandos para reiniciar serviços, verificar registos ou configurar definições, pode guardar esses comandos no ficheiro de histórico para um acesso rápido.


Explorar todo o potencial do PSReadLine

O PSReadLine é um módulo que melhora a experiência da consola do PowerShell. Oferece funcionalidades como coloração de sintaxe, IntelliSense preditivo e combinações de teclas personalizadas, facilitando o trabalho com o PowerShell.

Funcionalidades principais do PSReadLine

  1. Coloração de sintaxe
    Realça erros de sintaxe e torna os comandos mais legíveis.
  2. IntelliSense preditivo
    Sugere comandos automaticamente com base no seu histórico ou em plug-ins.
  3. Combinações de teclas personalizadas
    Mapeie teclas para ações personalizadas para uma execução mais rápida.
  4. Edição multilinha
    Edite e execute comandos de várias linhas sem problemas.
  5. Apresentação dinâmica de ajuda
    Apresenta informações de ajuda diretamente na consola sem que perca o seu lugar.

Cenários práticos de utilização do PSReadLine

Cenário 1: automatizar tarefas repetitivas

Digamos que reinicia frequentemente um servidor Web e verifica o seu estado. Em vez de escrever estes comandos sempre, pode guardá-los no histórico ou associá-los a uma tecla de atalho.

Restart-Service -Name "WebServer"
Get-Service -Name "WebServer" | Select-Object Status

Cenário 2: IntelliSense preditivo para uma descoberta mais rápida de comandos

O IntelliSense preditivo ajuda-o a encontrar e executar comandos rapidamente. Por exemplo, se usa frequentemente Get-Process, escrever “Get” irá sugerir comandos do seu histórico, incluindo Get-Process.

Para ativar o IntelliSense preditivo:

Set-PSReadLineOption -PredictionSource History

Cenário 3: combinações de teclas personalizadas para maior eficiência

Pode associar uma tecla para pesquisar rapidamente para trás no histórico de comandos:

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward

Ou criar uma associação personalizada para guardar um comando no histórico sem o executar:

$parameters = @{
    Key = 'Alt+w'
    ScriptBlock = {
      $line = $null
      $cursor = $null
      [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
      [Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
      [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
    }
}
Set-PSReadLineKeyHandler @parameters

Cenário 4: gestão segura do histórico de comandos

O PSReadLine filtra dados confidenciais, como palavras-passe e tokens, do ficheiro de histórico para proteger a sua segurança. Por exemplo:

$password = 'MySecurePassword'
Set-Secret -Name "MySecret" -SecretValue $password

Estes comandos não serão guardados no ficheiro de histórico.


Instalar o PSReadLine

O PSReadLine está disponível na Galeria do PowerShell. Para o instalar, execute:

Install-Module -Name PSReadLine -AllowClobber -Force

Nota: O PSReadLine requer o PowerShell 5.1 ou mais recente. Funciona com o Windows Terminal, o Visual Studio Code e o anfitrião de consola predefinido do Windows, mas não com o Windows PowerShell ISE.


Destaques das versões

O PSReadLine evoluiu significativamente desde o seu lançamento inicial no Windows PowerShell 5.1. As principais versões incluem:

  • v2.3.6: incluído no PowerShell 7.4.7 e 7.5.0
  • v2.3.4: introduziu melhorias na limpeza de dados confidenciais.
  • v2.2.6: melhorou a edição multilinha e o IntelliSense preditivo.

Para mais informações, consulte notas de lançamento do about_PSReadLine.


Saber mais sobre o PSReadLine

Para funcionalidades e exemplos adicionais, consulte a documentação oficial:

Deixe um comentário