- 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.
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.
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.
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
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.
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.
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à.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.