PowerShell\PSReadLine\ConsoleHost_history.txt C:\Users\<utilisateur>\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
ConsoleHost_history.txt : historique des commandes de la console PowerShell tenu par PSReadLine, une commande par ligne, en clair. Peut contenir des secrets.
À quoi ça sert
ConsoleHost_history.txt est le fichier d’historique de PSReadLine, le module qui gère l’édition de ligne dans la console PowerShell. C’est lui qui fait revenir les commandes des sessions précédentes avec la flèche haut ou la recherche inverse (Ctrl+R). Il y en a un par profil utilisateur.
Ce qu’il contient
Les lignes saisies dans la console, une par ligne, en texte brut. Par défaut, PSReadLine garde 4096 entrées (MaximumHistoryCount) et écrit au fil de l’eau. Le chemin réel est celui du paramètre HistorySavePath, que Get-PSReadLineOption affiche.
Seul l’hôte console est concerné : PowerShell ISE et Visual Studio Code ont leur propre historique. PSReadLine écarte les lignes qui évoquent un secret, comme celles contenant password ou token, mais ce filtre est sommaire : ne comptez pas dessus.
Risques et bonnes pratiques
- Le fichier est en clair. Mots de passe, jetons, noms de serveurs et chemins tapés en ligne de commande s’y retrouvent : ne le collez pas dans un ticket.
- Ne tapez pas de secret directement.
Get-Credential,Read-Host -AsSecureStringou un coffre de secrets évitent de laisser une trace. - Sur un poste partagé,
Set-PSReadLineOption -HistorySaveStyle SaveNothing(dans le profil PowerShell) coupe l’enregistrement, ou supprimez le fichier à intervalle régulier. - En investigation, c’est un bon indice mais jamais une preuve : l’utilisateur peut éditer le fichier. Recoupez avec le journal opérationnel PowerShell et les journaux de sécurité.
Commandes utiles
# Emplacement et réglages de l'historiqueGet-PSReadLineOption | Select-Object HistorySavePath, HistorySaveStyle, MaximumHistoryCount
# Dernières commandes enregistréesGet-Content -Path (Get-PSReadLineOption).HistorySavePath -Tail 20
# Chercher une commande (par exemple Get-Service)Select-String -Path (Get-PSReadLineOption).HistorySavePath -Pattern 'Get-Service'
# Effacer l'historique de l'utilisateur courant : simuler d'abord avec -WhatIfRemove-Item -Path (Get-PSReadLineOption).HistorySavePath -WhatIf