Como Exportar o Histórico Completo de Comandos no PowerShell

Quando trabalhamos no PowerShell, podemos facilmente acessar os comandos executados anteriormente usando as setas para cima e para baixo. No entanto, o comando Get-History exibe apenas o histórico da sessão atual. Se você já tentou encontrar comandos de sessões passadas e notou que eles não aparecem no Get-History, este post é para você!

Por que Get-History não mostra tudo?

O Get-History apenas retorna os comandos executados na sessão atual do PowerShell. Comandos de sessões anteriores não são armazenados automaticamente nesse histórico. Contudo, o módulo PSReadLine, que lida com a navegação do histórico através das setas, salva todos os comandos em um arquivo de texto, mesmo entre reinicializações do PowerShell.

Como acessar o histórico completo de comandos?

O módulo PSReadLine salva o histórico de comandos em um arquivo no disco. Aqui está como você pode localizar e exportar esse histórico.

1. Localizando o arquivo de histórico do PowerShell

Por padrão, o histórico de comandos é salvo em um arquivo de texto que pode ser encontrado nos seguintes diretórios:

  • Windows: C:\Users\<SeuUsuário>\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
  • Linux/macOS: ~/.local/share/powershell/PSReadLine/ConsoleHost_history.txt

2. Visualizando o histórico completo

Você pode ler o conteúdo do arquivo de histórico diretamente no PowerShell com o seguinte comando:

powershell

Copiar código
Get-Content "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"

3. Exportando o histórico para um formato específico

Se você deseja exportar o histórico completo para outros formatos como CSV, TXT ou JSON, veja abaixo como fazer isso:

  • Exportar para um arquivo TXT:

    powershellCopiar códigoGet-Content "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt" | 
      Out-File -FilePath "C:\caminho\para\arquivo.txt"
  • Exportar para um arquivo CSV:

    powershellCopiar códigoGet-Content "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt" | 
      Export-Csv -Path "C:\caminho\para\arquivo.csv" -NoTypeInformation
  • Exportar para um arquivo JSON:

    powershellCopiar códigoGet-Content "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt" | 
      ConvertTo-Json | Out-File -FilePath "C:\caminho\para\arquivo.json"

Conclusão

O PowerShell mantém um histórico de comandos entre sessões, mas para acessar esse histórico completo, você precisa ir além do Get-History e consultar o arquivo gerenciado pelo PSReadLine. Agora você sabe como localizar e exportar esse histórico para diversos formatos. Isso pode ser útil para documentar atividades ou revisitar comandos que você executou no passado.

Posted on