Cómo ver, buscar y borrar el historial de comandos en PowerShell y CMD

Última actualización: 14/08/2025
Autor: Isaac
  • PowerShell combina historial de sesión y PSReadLine para persistencia y búsquedas avanzadas entre sesiones.
  • Gestiona PowerShell con Get/Invoke/Add/Clear-History, atajos (F7, F8, F9, Ctrl+R/S) y opciones de PSReadLine.
  • CMD ofrece F7 y doskey para ver, exportar y ajustar el tamaño del historial, aunque es solo por sesión.
  • La auditoría con eventos 4688/4689 permite registrar procesos y líneas de comando a nivel de sistema.

Historial de comandos en Windows

Revisar lo que hemos tecleado en la consola es oro puro cuando estamos documentando, repitiendo tareas o corrigiendo errores. En Windows conviven CMD y PowerShell, y cada uno maneja el historial de comandos de forma distinta, con atajos, opciones de búsqueda, exportación y borrado que conviene dominar.

En esta guía práctica y muy completa aprenderás cómo ver, buscar, exportar, importar y eliminar el historial en PowerShell y CMD, cómo funciona el historial persistente de PSReadLine, qué parámetros ofrece Clear-History, qué atajos aceleran el trabajo y cómo auditar procesos con eventos 4688 y 4689 si necesitas un registro forense.

PowerShell vs CMD: cómo funciona su historial

PowerShell y CMD no juegan en la misma liga cuando hablamos de historial. CMD solo conserva los comandos durante la sesión activa, mientras que PowerShell combina un historial de sesión integrado con otro persistente mantenido por el módulo PSReadLine.

El historial de sesión integrado de PowerShell es volátil y se borra al cerrar la consola; se consulta con Get-History y se gestiona con cmdlets como Invoke-History, Add-History o Clear-History. Por defecto, la variable $MaximumHistoryCount limita el número de entradas y generalmente está en 4096.

PSReadLine guarda un archivo de historial por usuario y host, y mantiene el historial entre sesiones. Este archivo, disponible desde PowerShell 5.0, permite navegar con las flechas arriba y abajo, y realizar búsquedas incrementales mediante combinaciones de teclado.

Ver y buscar el historial en PowerShell

Get-History es la puerta de entrada al historial de la sesión. Muestra el Id, línea de comando y orden de ejecución; su alias es ‘h’. Sin embargo, solo refleja lo ocurrido en la sesión actual, no el archivo persistente de PSReadLine.

Get-History

Los atajos de teclado en la consola ahorran tiempo: flecha arriba para comandos previos, flecha abajo para siguientes, F7 para listar en una ventana, ESC para cerrar, F8 para buscar por prefijo (teclea y pulsa F8), y F9 para ejecutar por Id.

  El nombre de este directorio no es válido[Corregir].

La búsqueda inversa, muy útil: Ctrl+R busca hacia atrás en el historial, escribiendo parte del comando, y Ctrl+S realiza la búsqueda hacia adelante. PSReadLine permite también buscar con ‘#cadena’ y saltar entre coincidencias pulsando Tab.

El orden del historial puede parecer extraño: PowerShell agrega comandos cuando estos finalizan, no al teclearlos, y en prompts anidados algunos no se registran hasta regresar al nivel anterior, lo cual puede confundir en ejecuciones largas.

Historial persistente con PSReadLine

PSReadLine mantiene un registro permanente en un archivo de texto por usuario y host, garantizando que los comandos previos se puedan recuperar tras cerrar y volver a abrir PowerShell.

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

Se puede consultar y modificar su comportamiento con Get-PSReadLineOption y Set-PSReadLineOption. Esto permite configurar aspectos como duplicados, sensibilidad a mayúsculas, ruta y estilo de guardado entre otras preferencias.

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

Opciones clave a tener en cuenta:

  • HistoryNoDuplicates: evita entradas repetidas, reduciendo duplicados
  • MaximumHistoryCount: controla el número máximo de comandos almacenados
  • HistorySearchCursorMovesToEnd: ajusta la posición del cursor en búsquedas
  • HistorySearchCaseSensitive: realiza búsquedas sensibles a mayúsculas
  • HistorySavePath: define la ruta del archivo de historial
  • HistorySaveStyle: determina cuándo se guarda el historial, opciones incluyen SaveIncrementally, SaveAtExit y SaveNothing

Se puede personalizar mediante Set-PSReadLineOption. Por ejemplo, para guardar solo al salir y reducir escrituras en disco:

Set-PSReadLineOption -HistorySaveStyle SaveAtExit

Controla también el tamaño del historial con $MaximumHistoryCount. Para limitarlo a 100 comandos, ajusta la variable y reinicia PowerShell; para que sea persistente, añádelo a tu perfil de PowerShell.

$MaximumHistoryCount = 100

Borrar, filtrar y gestionar el historial en PowerShell

Clear-History limpia el historial de la sesión activa, sin afectar el archivo persistente de PSReadLine. Se usa para comenzar desde cero o eliminar entradas específicas por Id, patrón, cantidad o antigüedad.

Sintaxis principal con conjuntos de parámetros:

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

Parámetros utilizados: -Id para borrar por identificador, -CommandLine para patrones exactos o comodines, -Count para la cantidad de entradas, y -Newest para invertir el orden y eliminar las últimas. También admite confirmación y modo simulación con -WhatIf.

  Cómo solucionar el error CRITICAL_PROCESS_DIED (0x000000EF) en Windows

Ejemplo: eliminar todo el historial en la sesión activa:

Get-History
Clear-History
Get-History

Ejemplo: eliminar las 5 últimas entradas con -Count y -Newest:

Clear-History -Count 5 -Newest
Get-History

Ejemplo: eliminar entradas que coincidan con patrones con -CommandLine:

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

Ejemplo: borrar por Ids específicos:

Clear-History -Id 3, 5
Get-History

Ejemplo: combinar -Id y -Count para eliminar en secuencia desde un Id específico:

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

Recuerda: -Count con -Id elimina desde el Id incluido, con -CommandLine elimina las coincidencias en orden, y por defecto elimina las entradas más antiguas, salvo que uses -Newest.

Ejecutar y cargar comandos desde el historial en PowerShell

Invoke-History ejecuta una entrada del historial sin tener que reescribirla. Su alias es ‘r’. Sin parámetros, repite la última; con Id, ejecuta exactamente ese comando:

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

También puedes exportar e importar el historial para documentar o compartir procedimientos. Se exporta a CSV o Clixml y se vuelve a importar añadiéndolo 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
Artículo relacionado:
Cómo dominar el historial de fiabilidad en PowerShell: gestión, auditoría y análisis

Ver y gestionar el historial en CMD

CMD mantiene solo un historial durante la sesión activa. Puedes navegar con las flechas arriba y abajo, usar PgUp y PgDn para desplazamientos, y presionar F7 para abrir una ventana con todos los comandos guardados; ESC cierra esa ventana.

Otros atajos útiles en CMD: F9 para pedir el número de comando en la lista visualizada y F8 para buscar coincidencias que empiezan con lo que has escrito hasta ahora en la línea.

Doskey amplia las capacidades: permite ver el historial completo con ‘doskey /history’ o guardarlo en un archivo con redirección, por ejemplo, ‘doskey /history > C:\cmd_history.txt’. También puedes ajustar el tamaño de memoria con /listsize=100.

Para limpiar el historial en memoria, utiliza la combinación de teclado Alt+F7. No olvides que al cerrar CMD, el historial se pierde salvo si exportaste previamente.

Para tener un historial persistente más potente en CMD, puedes usar herramientas como Clink, que mejoran significativamente la gestión y búsqueda del historial, o Windows Terminal, que integra varias consolas y soporte para PowerShell y WSL2.

  Cómo solucionar el error OOBEREGION en Windows

Auditar comandos y procesos con el Visor de eventos

Para un control exhaustivo y centralizado, puedes registrar la creación de procesos mediante auditoría avanzada. El evento 4688 registra cada proceso iniciado, con datos del usuario, contexto y línea de comandos; el 4689 indica su finalización.

Activar ‘Audit process creation’ en la política de seguridad local, en la sección de auditoría avanzada, configurando Success y/o Failure según prefieras.

Luego, ajusta la directiva en gpedit.msc en Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy Configuration > System Audit Policies > Detailed Tracking y habilítala.

Para visualizar estos eventos, abre el Visor de eventos en Windows, navega a Windows Logs > Security, y filtra por Id 4688. Para análisis más profundo, herramientas como Logbinder Supercharger pueden facilitar la revisión.

Cmdlets y notas útiles del historial en PowerShell

Cmdlets principales de historial: Get-History (alias ‘h’) para ver, Invoke-History (alias ‘r’) para ejecutar, Add-History para añadir comandos, y Clear-History (alias ‘clhy’) para eliminar. El historial de PowerShell y PSReadLine conviven, pero Clear-History solo afecta al de la sesión activa.

Notas finales sobre Clear-History: no acepta entrada por canalización, no devuelve salida, admite comodines en -CommandLine, y soporta CommonParameters como -Verbose y -ErrorAction para control adicional.

comandos shell: para usar en la barra de direcciones del Explorador de archivos de Windows 11
Artículo relacionado:
Comandos shell y CMD para la barra de direcciones en Windows 11

Dominar el historial en PowerShell y CMD facilita la recuperación rápida de comandos, depuración de procedimientos, documentación y auditoría. PSReadLine aporta persistencia y potencia en búsqueda, mientras que Clear-History controla qué comandos permanecen en la sesión, y los eventos 4688 y 4689 elevan el registro al nivel de seguridad y cumplimiento.

Deja un comentario