Come visualizzare, cercare e cancellare la cronologia dei comandi in PowerShell e CMD

Ultimo aggiornamento: 14/08/2025
Autore: Isaac
  • PowerShell Combina la cronologia delle sessioni e PSReadLine per la persistenza e le ricerche avanzate tra sessioni.
  • Gestisci PowerShell con Get/Invoke/Add/Clear-History, scorciatoie (F7, F8, F9, Ctrl+R/S) e opzioni PSReadLine.
  • CMD offre F7 e doskey per visualizzare, esportare e regolare le dimensioni della cronologia, anche se solo per sessione.
  • L'audit con gli eventi 4688/4689 consente di registrare processi e righe di comando a livello di sistema.

Cronologia dei comandi in Windows

Controllare ciò che abbiamo digitato nella console è oro puro. quando documentiamo, ripetiamo attività o correggiamo errori. In Windows CMD e PowerShell coesistono e ognuno gestisce la cronologia di comandi in modo diverso, con scorciatoie, opzioni di ricerca, esportazione ed eliminazione che vale la pena imparare a padroneggiare.

In questa guida pratica e molto completa Imparerai come visualizzare, cercare, esportare, importare ed eliminare la cronologia in PowerShell e CMD, come funziona la cronologia persistente di PSReadLine, cosa offrono le opzioni Clear-History, quali scorciatoie velocizzano il tuo lavoro e come controllare i processi con gli eventi 4688 e 4689 se hai bisogno di un registro forense.

PowerShell vs. CMD: come funziona la loro cronologia

PowerShell e CMD non giocano nella stessa lega quando parliamo di cronologia. CMD conserva i comandi solo per la durata della sessione attiva, mentre PowerShell combina una cronologia di sessione integrata con una cronologia persistente gestita dal modulo PSReadLine.

Cronologia delle sessioni integrata di PowerShell È volatile e viene cancellato alla chiusura della console; viene interrogato con Get-History e gestito con cmdlet come Invoke-History, Add-History o Clear-History. Per impostazione predefinita, la variabile $MaximumHistoryCount limita il numero di voci ed è in genere impostata su 4096.

PSReadLine salva un file cronologico per utente e hoste mantiene la cronologia tra le sessioni. Questo file, disponibile a partire da PowerShell 5.0, consente di navigare con le frecce su e giù ed eseguire ricerche incrementali utilizzando le scorciatoie da tastiera.

Visualizza e cerca la cronologia in PowerShell

Get-History è il gateway per la cronologia delle sessioniVisualizza l'ID, la riga di comando e l'ordine di esecuzione; il suo alias è 'h'. Tuttavia, riflette solo gli eventi della sessione corrente, non quelli del file persistente PSReadLine.

Get-History

I scorciatoie da tastiera sulla console risparmia tempo: Freccia su per i comandi precedenti, freccia giù per quelli successivi, F7 per elencare in una finestra, ESC per chiudere, F8 per cercare per prefisso (digitare e premere F8) e F9 per eseguire per ID.

  Disattiva gli aggiornamenti automatici da Microsoft Store

Ricerca inversa, molto utileCtrl+R consente di effettuare ricerche all'indietro nella cronologia digitando parte del comando, mentre Ctrl+S consente di effettuare ricerche in avanti. PSReadLine consente anche di effettuare ricerche con '#string' e di passare da una corrispondenza all'altra premendo Tab.

L'ordine della storia può sembrare strano: PowerShell aggiunge i comandi al termine dell'esecuzione, non quando vengono digitati, e nei prompt annidati alcuni non vengono registrati finché non si torna al livello precedente, il che può creare confusione durante le esecuzioni lunghe.

Cronologia persistente con PSReadLine

PSReadLine mantiene un record permanente in un file di testo per utente e host, garantendo che i comandi precedenti possano essere recuperati dopo aver chiuso e riaperto PowerShell.

%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

Il suo comportamento può essere interrogato e modificato con Get-PSReadLineOption e Set-PSReadLineOptionCiò consente di configurare aspetti quali duplicati, distinzione tra maiuscole e minuscole, percorso e stile di salvataggio, tra le altre preferenze.

Get-PSReadLineOption | Select HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath, HistorySaveStyle

Opzioni chiave da considerare:

  • HistoryNoDuplicates: evita voci duplicate, riduzione dei duplicati
  • MaximumHistoryCount: controlla il numero massimo di comandi memorizzati
  • HistorySearchCursorMovesToEnd: regola la posizione del cursore nelle ricerche
  • HistorySearchCaseSensitive: esegue ricerche con distinzione tra maiuscole e minuscole
  • HistorySavePath: definisce il percorso del file cronologico
  • HistorySaveStyle: determina quando la cronologia viene salvata, le opzioni includono SaveIncrementally, SaveAtExit e SaveNothing

Può essere personalizzato utilizzando Set-PSReadLineOptionAd esempio, per salvare solo all'uscita e ridurre le scritture su disco:

Set-PSReadLineOption -HistorySaveStyle SaveAtExit

Controlla anche la dimensione della cronologia con $MaximumHistoryCountPer limitarlo a 100 comandi, modifica la variabile e riavvia PowerShell; per renderlo persistente, aggiungilo al tuo profilo PowerShell.

$MaximumHistoryCount = 100

Cancella, filtra e gestisci la cronologia in PowerShell

Clear-History cancella la cronologia della sessione attiva, senza influire sul file persistente PSReadLine. Utilizzato per ripartire da zero o eliminare voci specifiche per ID, modello, quantità o età.

Sintassi principale con set di parametri:

Clear-History  <int[]>]  <int>]    
Clear-History  <int>] >]    

Parametri utilizzati-Id per eliminare in base all'identificatore, -CommandLine per modelli esatti o caratteri jolly, -Count per il numero di voci e -Newest per invertire l'ordine ed eliminare le voci più recenti. Supporta anche la modalità di conferma e simulazione con -WhatIf.

  Come creare e gestire punti di ripristino manuali in Windows utilizzando PowerShell

Esempio: elimina tutta la cronologia nella sessione attiva:

Get-History
Clear-History
Get-History

Esempio: eliminare le ultime 5 voci con -Conteggio e -Più recente:

Clear-History -Count 5 -Newest
Get-History

Esempio: rimuovere le voci che corrispondono ai modelli con -CommandLine:

Clear-History -CommandLine '*Help*', '*Syntax'
Get-History

Esempio: elimina per ID specifici:

Clear-History -Id 3, 5
Get-History

Esempio: combinazione di -Id e -Count Per eliminare in sequenza da un ID specifico:

Clear-History -Id 7 -Count 5
Get-History

Ricorda: -Count con -Id rimuove dall'Id incluso, con -CommandLine rimuove le corrispondenze in ordine e, per impostazione predefinita, rimuove le voci più vecchie, a meno che non si utilizzi -Newest.

Eseguire e caricare comandi dalla cronologia in PowerShell

Invoke-History esegue una voce della cronologia senza doverlo riscrivere. Il suo alias è 'r'. Senza parametri, ripete l'ultimo comando; con un Id, esegue esattamente quel comando:

Invoke-History          # Repetir la última entrada
Invoke-History -Id 12   # Ejecutar la entrada 12

È anche possibile esportare e importare la cronologia. Per documentare o condividere procedure. Esporta in CSV o Clixml e reimporta aggiungendolo con 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
powershell
Articolo correlato:
Come gestire la cronologia dell'affidabilità in PowerShell: gestione, auditing e analisi

Visualizza e gestisci la cronologia in CMD

CMD conserva solo una cronologia durante la sessione attivaÈ possibile navigare con le frecce su e giù, usare PgSu e PgGiù per spostarsi e premere F7 per aprire una finestra con tutti i comandi salvati; ESC chiude la finestra.

Altre scorciatoie utili in CMD: F9 per chiedere il numero del comando nell'elenco visualizzato e F8 per cercare corrispondenze che iniziano con ciò che hai digitato finora sulla riga.

Doskey amplia le capacità: consente di visualizzare la cronologia completa con 'doskey /history' o di salvarla in un file reindirizzato, ad esempio 'doskey /history > C:\cmd_history.txt'. È anche possibile regolare la dimensione della memoria con /listsize=100.

Per cancellare la cronologia in memoria, usa la scorciatoia da tastiera Alt+F7. Non dimenticare che quando chiudi CMD, la cronologia andrà persa, a meno che tu non l'abbia esportata in precedenza.

Per avere una cronologia persistente più potente in CMD, puoi utilizzare strumenti come Clink, che migliorano notevolmente la gestione della cronologia e la ricerca, oppure Windows terminal, che integra più console e il supporto per PowerShell e WSL2.

  Che cos'è Microsoft Rewards: una guida completa per guadagnare e riscattare punti

Controlla i comandi e i processi con Visualizzatore eventi

Per un controllo completo e centralizzatoÈ possibile registrare la creazione di processi utilizzando l'audit avanzato. L'evento 4688 registra ogni processo avviato, con informazioni sull'utente, sul contesto e sulla riga di comando; l'evento 4689 ne indica la terminazione.

Attiva 'Creazione processo di audit' Nella policy di sicurezza locale, nella sezione di controllo avanzato, imposta Riuscito e/o Fallimento come preferisci.

Quindi regolare la policy in gpedit.msc in Configurazione computer > Impostazioni di Windows > Impostazioni di sicurezza > Configurazione criteri di controllo avanzati > Criteri di controllo del sistema > Monitoraggio dettagliato e abilitarlo.

Per visualizzare questi eventi, apri Visualizzatore eventi in Windows, vai su Windows Registri > Sicurezza e filtra per ID 4688. Per un'analisi più approfondita, strumenti come Logbinder Supercharger possono semplificare la revisione.

Cmdlet utili e note cronologiche in PowerShell

Cmdlet della cronologia principale: Get-History (alias 'h') per visualizzare, Invoke-History (alias 'r') per eseguire, Add-History per aggiungere comandi e Clear-History (alias 'clhy') per eliminare. La cronologia di PowerShell e PSReadLine coesistono, ma Clear-History influisce solo sulla cronologia della sessione attiva.

Note finali su Clear-History: non accetta input reindirizzati, non restituisce output, supporta i caratteri jolly in -CommandLine e supporta CommonParameters come -Verbose e -ErrorAction per un controllo aggiuntivo.

Comandi shell: da utilizzare nella barra degli indirizzi di Esplora file di Windows 11
Articolo correlato:
Comandi Shell e CMD per la barra degli indirizzi in Windows 11

Padroneggiare la cronologia in PowerShell e CMD Facilita il rapido recupero dei comandi, il debug procedurale, la documentazione e l'audit. PSReadLine fornisce persistenza e capacità di ricerca, mentre Clear-History controlla quali comandi rimangono nella sessione e gli eventi 4688 e 4689 elevano la registrazione a un livello di sicurezza e conformità.