Eu uso o Windows 10 atual com o Powershell 5.1. Muitas vezes, quero procurar comandos que usei no passado para modificá-los e/ou executá-los novamente. Inevitavelmente, os comandos que estou procurando foram executados em uma janela/sessão anterior ou diferente do PowerShell.
Quando martelo a ↑tecla, posso navegar por muitos, muitos comandos de muitas e muitas sessões, mas quando tento pesquisá-los usando Get-History | Where-Object {$_.CommandLine -Like "*docker cp*"}
, não obtenho resultados. A solução de problemas básica revela que Get-History
não mostra nada das sessões anteriores, conforme mostrado por:
C:\Users\Me> Get-History
Id CommandLine
-- -----------
1 Get-History | Where-Object {$_.CommandLine -Like "*docker cp*"}
Como posso pesquisar os comandos anteriores que a ↑chave fornece usando Get-History
ou outro cmdlet?
O histórico persistente que você menciona é fornecido por PSReadLine . Ele é separado do
Get-History
.O histórico é armazenado em um arquivo definido pela propriedade
(Get-PSReadlineOption).HistorySavePath
. Visualize este arquivo comGet-Content (Get-PSReadlineOption).HistorySavePath
, ou um editor de texto, etc. Inspecione as opções relacionadas comGet-PSReadlineOption
. PSReadLine também realiza pesquisas de histórico via ctrl+ r.Usando seu exemplo fornecido:
Get-Content (Get-PSReadlineOption).HistorySavePath | ? { $_ -like '*docker cp*' }
Mais informações
Como @jscott mencionou em sua resposta, o PowerShell 5.1 ou superior no Windows 10 usa o
PSReadLine
módulo para dar suporte ao ambiente de edição de comandos. O mapeamento de chave completo deste módulo pode ser recuperado usando oGet-PSReadLineKeyHandler
cmdlet. Para visualizar todos os mapeamentos de chave relacionados ao histórico, use o seguinte comando:e aqui está a saída:
Eu tenho isso no meu perfil PS:
function hist { $find = $args; Write-Host "Finding in full history using {`$_ -like `"*$find*`"}"; Get-Content (Get-PSReadlineOption).HistorySavePath | ? {$_ -like "*$find*"} | Get-Unique | more }
Achei o seguinte mais direto:
Lista de alias:
History eh são alias para Get -History
O uso do comando a seguir me obtém os comandos relacionados onde a palavra "history" foi usada.
Resultados: