- PowerShell Combina histórico de sessão e PSReadLine para persistência e pesquisas avançadas entre sessões.
- Gerencie o PowerShell com Obter/Invocar/Adicionar/Limpar histórico, atalhos (F7, F8, F9, Ctrl+R/S) e opções PSReadLine.
- CMD oferece F7 e doskey para visualizar, exportar e ajustar o tamanho do histórico, embora seja apenas por sessão.
- A auditoria com eventos 4688/4689 permite registrar processos e linhas de comando no nível do sistema.
Verificar o que digitamos no console é ouro puro. quando estamos documentando, repetindo tarefas ou corrigindo erros. Em Windows CMD e PowerShell coexistem e cada um lida com o histórico de comandos de uma forma diferente, com atalhos, opções de pesquisa, exportação e exclusão que vale a pena dominar.
Neste guia prático e muito completo Você aprenderá como visualizar, pesquisar, exportar, importar e excluir histórico no PowerShell e no CMD, como funciona o histórico persistente do PSReadLine, o que as opções Clear-History oferecem, quais atalhos aceleram seu trabalho e como auditar processos com os eventos 4688 e 4689 se precisar de um log forense.
PowerShell vs. CMD: Como funciona sua história
PowerShell e CMD não jogam na mesma liga Quando falamos de histórico, o CMD retém os comandos apenas durante a sessão ativa, enquanto o PowerShell combina um histórico de sessão integrado com um histórico persistente mantido pelo módulo PSReadLine.
Histórico de sessão integrado do PowerShell É volátil e é limpo quando o console é fechado; é consultado com Get-History e gerenciado com cmdlets como Invoke-History, Add-History ou Clear-History. Por padrão, a variável $MaximumHistoryCount limita o número de entradas e normalmente é definida como 4096.
PSReadLine salva um arquivo de histórico por usuário e hoste mantém o histórico entre as sessões. Este arquivo, disponível desde o PowerShell 5.0, permite navegar com as setas para cima e para baixo e realizar pesquisas incrementais usando atalhos de teclado.
Exibir e pesquisar histórico no PowerShell
Get-History é o portal para o histórico da sessãoExibe o ID, a linha de comando e a ordem de execução; seu alias é 'h'. No entanto, ele reflete apenas os eventos da sessão atual, não o arquivo PSReadLine persistente.
Get-History
Os atalhos de teclado no console economize tempo: Seta para cima para comandos anteriores, Seta para baixo para os próximos, F7 para listar em uma janela, ESC para fechar, F8 para pesquisar por prefixo (digite e pressione F8) e F9 para executar por ID.
Pesquisa reversa, muito útilCtrl+R pesquisa para trás no histórico digitando parte do comando, e Ctrl+S pesquisa para frente. O PSReadLine também permite pesquisar com '#string' e alternar entre as correspondências pressionando Tab.
A ordem da história pode parecer estranha: O PowerShell adiciona comandos quando eles terminam, não quando você os digita, e em prompts aninhados alguns não são registrados até você retornar ao nível anterior, o que pode ser confuso durante execuções longas.
Histórico persistente com PSReadLine
O PSReadLine mantém um registro permanente em um arquivo de texto por usuário e host, garantindo que comandos anteriores possam ser recuperados após fechar e reabrir o PowerShell.
%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
Seu comportamento pode ser consultado e modificado com Get-PSReadLineOption e Set-PSReadLineOptionIsso permite que você configure aspectos como duplicatas, diferenciação entre maiúsculas e minúsculas, caminho e estilo de salvamento, entre outras preferências.
Get-PSReadLineOption | Select HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath, HistorySaveStyle
Principais opções a considerar:
- HistoryNoDuplicates: evita entradas duplicadas, reduzindo duplicatas
- MaximumHistoryCount: controla o número máximo de comandos armazenados
- HistorySearchCursorMovesToEnd: Ajusta a posição do cursor nas pesquisas
- HistorySearchCaseSensitive: realiza pesquisas que diferenciam maiúsculas de minúsculas
- HistorySavePath: define o caminho para o arquivo de histórico
- HistorySaveStyle: determina quando o histórico é salvo, as opções incluem SaveIncrementally, SaveAtExit e SaveNothing
Pode ser personalizado usando Set-PSReadLineOption. Por exemplo, para salvar apenas na saída e reduzir as gravações em disco:
Set-PSReadLineOption -HistorySaveStyle SaveAtExit
Controle também o tamanho do histórico com $MaximumHistoryCountPara limitá-lo a 100 comandos, ajuste a variável e reinicie o PowerShell; para torná-lo persistente, adicione-o ao seu perfil do PowerShell.
$MaximumHistoryCount = 100
Limpar, filtrar e gerenciar histórico no PowerShell
Clear-History limpa o histórico da sessão ativa, sem afetar o arquivo PSReadLine persistente. Usado para começar do zero ou excluir entradas específicas por ID, padrão, quantidade ou idade.
Sintaxe principal com conjuntos de parâmetros:
Clear-History <int[]>] <int>]
Clear-History <int>] >]
Parâmetros utilizados-Id para excluir por identificador, -CommandLine para padrões exatos ou curingas, -Count para o número de entradas e -Newest para inverter a ordem e excluir as entradas mais recentes. Também suporta modo de confirmação e simulação com -WhatIf.
Exemplo: apagar todo o histórico na sessão ativa:
Get-History
Clear-History
Get-History
Exemplo: excluir as últimas 5 entradas com -Count e -Newest:
Clear-History -Count 5 -Newest
Get-History
Exemplo: remover entradas que correspondem a padrões com -CommandLine:
Clear-History -CommandLine '*Help*', '*Syntax'
Get-History
Exemplo: excluir por IDs específicos:
Clear-History -Id 3, 5
Get-History
Exemplo: combinando -Id e -Count Para excluir em sequência de um ID específico:
Clear-History -Id 7 -Count 5
Get-History
Lembre-se: -Count com -Id remove do Id incluído, com -CommandLine ele remove as correspondências em ordem e, por padrão, remove as entradas mais antigas, a menos que você use -Newest.
Executar e carregar comandos do histórico no PowerShell
Invoke-History executa uma entrada de histórico sem precisar reescrevê-lo. Seu alias é 'r'. Sem parâmetros, ele repete o último comando; com um Id, ele executa exatamente esse comando:
Invoke-History # Repetir la última entrada
Invoke-History -Id 12 # Ejecutar la entrada 12
Você também pode exportar e importar o histórico. Para documentar ou compartilhar procedimentos. Exporte para CSV ou Clixml e importe novamente adicionando com Add-History:
Get-History | Export-Csv -Path .\historial.csv -NoTypeInformation
Get-History | Export-Clixml -Path .\historial.xml
$h = Import-Clixml .\historial.xml
$h | Add-History
Visualizar e gerenciar histórico no CMD
O CMD mantém apenas um histórico durante a sessão ativaVocê pode navegar com as setas para cima e para baixo, usar PgUp e PgDn para navegar e pressionar F7 para abrir uma janela com todos os seus comandos salvos; ESC fecha essa janela.
Outros atalhos úteis no CMD: F9 para solicitar o número do comando na lista exibida e F8 para procurar correspondências que comecem com o que você digitou até agora na linha.
Doskey expande capacidades: permite visualizar o histórico completo com 'doskey /history' ou salvá-lo em um arquivo redirecionado, por exemplo, 'doskey /history > C:\cmd_history.txt'. Você também pode ajustar o tamanho da memória com /listsize=100.
Para limpar o histórico na memória, use o atalho de teclado Alt+F7. Não se esqueça de que, ao fechar o CMD, seu histórico será perdido, a menos que você o tenha exportado anteriormente.
Para ter um histórico persistente mais poderoso no CMD, você pode usar ferramentas como o Clink, que melhoram significativamente o gerenciamento de histórico e a pesquisa, ou o Windows terminal, que integra vários consoles e suporte para PowerShell e WSL2.
Auditar comandos e processos com o Visualizador de Eventos
Para controle abrangente e centralizadoVocê pode registrar a criação de processos usando auditoria avançada. O evento 4688 registra cada processo iniciado, com informações de usuário, contexto e linha de comando; o evento 4689 indica seu término.
Ativar 'Criação de processo de auditoria' na política de segurança local, na seção de auditoria avançada, definindo Sucesso e/ou Falha como preferir.
Em seguida, ajuste a política em gpedit.msc em Configuração do computador > Configurações do Windows > Configurações de segurança > Configuração avançada da política de auditoria > Políticas de auditoria do sistema > Rastreamento detalhado e habilite-o.
Para visualizar esses eventos, abra o Visualizador de Eventos no Windows, navegue até o Windows Logs > Segurança e filtrar por ID 4688. Para uma análise mais aprofundada, ferramentas como o Logbinder Supercharger podem facilitar a revisão.
Cmdlets úteis e notas históricas no PowerShell
Principais Cmdlets de Histórico: Get-History (também conhecido como 'h') para visualizar, Invoke-History (também conhecido como 'r') para executar, Add-History para adicionar comandos e Clear-History (também conhecido como 'clhy') para excluir. Os históricos do PowerShell e do PSReadLine coexistem, mas o Clear-History afeta apenas o histórico da sessão ativa.
Notas finais sobre Clear-History: não aceita entrada canalizada, não retorna saída, suporta curingas em -CommandLine e suporta CommonParameters como -Verbose e -ErrorAction para controle adicional.
Dominando a história no PowerShell e no CMD facilita a recuperação rápida de comandos, depuração de procedimentos, documentação e auditoria. O PSReadLine fornece persistência e poder de busca, enquanto o Clear-History controla quais comandos permanecem na sessão, e os eventos 4688 e 4689 elevam o registro a um nível de segurança e conformidade.
Escritor apaixonado pelo mundo dos bytes e da tecnologia em geral. Adoro compartilhar meu conhecimento por meio da escrita, e é isso que farei neste blog, mostrar a vocês tudo o que há de mais interessante sobre gadgets, software, hardware, tendências tecnológicas e muito mais. Meu objetivo é ajudá-lo a navegar no mundo digital de uma forma simples e divertida.
