Cómo utilizar el historial de PowerShell
Algo que nos pasa a todos cuando utilizamos cualquier tipo de shell es encontrarnos con la necesidad de consultar comandos escritos minutos o días atrás e incluso volver a ejecutarlos. En GNU/Linux disponemos del comando history, y en la entrada de hoy veremos qué opciones tenemos para trabajar con el historial de PowerShell.
Comandos relacionados con el historial de PowerShell
Como siempre, cuando queremos descubrir cmdlets relacionados con una determinada acción debemos acudir al comando Get-Command, con el que consultar dentro de nuestros módulos disponibles. En este caso queremos interactuar con el historial de PowerShell, por lo que la búsqueda es sencilla:
|
|
Consultando el historial de PowerShell
Empecemos el repaso por consultar el histórico de comandos ejecutados. Para tal efecto, como podemos deducir de los cmdlets mostrados anteriormente nos valdremos de Get-History:
Es importante tener en cuenta algunas cosas acerca de Get-History:
- Con Get-History unicamente podremos ver los comandos ejecutados en la sesión actual de PowerShell. Esto quiere decir que si cerramos la terminal y volvemos a abrirla veremos un historial vacío.
- Get-History dispone de un máximo de entradas “retenidas” en el historial que, a partir de PowerShell 3.0 es de 4096 entradas. Se puede consultar y cambiar dicha configuración desde la variable $MaximumHistoryCount.
- Disponemos de un alias con el que ejecutar este cmdlet: h.
Volviendo a ejecutar entradas del historial
Como hemos visto en el punto anterior con Get-History obtenemos dos parámetros: un ID y el comando ejecutado. Con Invoke-History (y su utilísimo alias r) podemos utilizar esta relación ID-comando para ejecutar comandos de nuestro historial. La ejecución es muy simple:
De no facilitar un Id se ejecutará la última entrada de nuestro historial.
Ejecutando entradas del historial aún mejor
Si bien utilizar el método para ejecutar entradas del historial de PowerShell anteriormente mostrado es rápido (sobretodo utilizando los alias h y r) disponemos de una forma aún mejor de buscar y ejecutar entradas anteriores. Si desde nuestra terminal pulsamos la combinación Ctrl+R podremos acceder a la función de búsqueda de nuestro historial:
Como podemos ver en la captura, dado que yo recordaba haber ejecutado un comando que contenía la palabra “test” al escribirla después de la combinación Ctrl+R se ha rellenado mi línea de comandos actual con dicho comando. Algunas cosas interesantes que saber sobre este método:
- La búsqueda se realiza de forma inversa, es decir, el primer resultado que aparecerá será el que hayamos ejecutado último.
- Podemos desplazarnos por la búsqueda con Ctrl+R (seguiremos avanzando de forma inversa) y Ctrl+S (retrocederemos en la búsqueda inversa).
- Una vez nos hayamos desplazado hasta el comando buscado con apretar la tecla Enter ejecutaremos dicho comando.
- Los resultados que obtendremos del historial son de la propia sesión de PowerShell que estamos ejecutando o de anteriores, al contrario que con Get-History que únicamente obtendremos resultados de la sesión activa.
Exportando, borrando e importando el historial
Otra de las cosas interesantes que podemos hacer con el historial es transportarlo a otra máquina o guardarlo para examinarlo en otro momento. Esto puede ser interesante si hemos realizado un procedimiento y queremos acabar de documentarlo a posteriori o queremos replicarlo en otra máquina.
Para exportar el historial de PowerShell lo que tenemos que hacer es listarlo con Get-History y pasarlo a csv o xml con Export-Csv o Export-CliXml respectivamente.
|
|
Una vez hecho podemos pasar a borrar el historial de nuestra sesión con Clear-History:
En este caso borramos el historial entero, pero si indicamos un parámetro -Id podemos borrar de forma selectiva una entrada concreta.
Por último vamos a ver cómo importar el historial previamente exportado. Para ello utilizaremos Import-CliXml para importar el archivo previamente exportado y Add-History para poner su contenido en el historial.