ConsoleGuiTools contiene un par de herramientas gráficas para PowerShell muy potentes.
Out-ConsoleGridView – Puedes enviar objetos powershell a una ventana en forma de cuadrícula para filtrar y ordenar los datos de forma interactiva.
Show-ObjectTree – Hace lo mismo que Out-ConsoleGridView pero en este caso los datos del objeto se muestran en forma de árbol.
- Funcionan en cualquier sistema operativo que admita PowerShell 7.2 o superior.
- Se puede usar el ratón y el teclado para interactuar con la vista de cuadrícula o de árbol.
- Incorpora una casilla para escribir el filtro a utilizar.
- Es posible seleccionar varios elementos y enviarlos por el flujo de trabajo.
- Se puede personalizar la ventana de vista de cuadrícula con los parámetros integrados.
¿Cómo se instala?
Abrimos una instancia de PowerShell 7.2 o superior y dentro tecleamos
Install-Module Microsoft.PowerShell.ConsoleGuiTools
¿Cómo se usa?
Podemos pasarle cualquier objeto como por ejemplo los procesos en ejecución:
Get-Process | Out-ConsoleGridView
O los servicios:
Get-Service | Out-ConsoleGridView
O un listado de ficheros recursivo desde la carpeta actual:
Get-ChildItem -Recurse | Out-ConsoleGridView
Quizás nos interese en forma de árbol para ver mejor las rutas:
Get-ChildItem -Recurse | Show-ObjectTree
O quizás queramos usar una variable para pasarle los datos y luego visualizar la variable:
$ficheros = Get-ChildItem -Recurse
$ficheros | Out-ConsoleGridView
O quizás queramos poner un título pasando el parámetro -Title e incluso que permita selección múltiple con el parámetro -OutputMode Multiple
Get-ChildItem -Recurse | Out-ConsoleGridView -Title "Listado de archivos" -OutputMode Multiple
O llevar el resultado de nuestra selección a un fichero de texto llamado test.txt
Get-ChildItem -Recurse | Out-ConsoleGridView -Title "Listado de archivos" -OutputMode Multiple | Out-File ./test.txt
O ver las propiedades de los procesos en ejecución en forma de árbol haciendo doble clic de ratón encima de cada proceso.
Get-Process | Show-ObjectTree
Podemos definir una función que finalice los procesos en ejecución
function finalizaproceso { Get-Process | Out-ConsoleGridView -OutputMode Single -Filter $args[0] | Stop-Process -Id {$_.Id} }
Así solo tenemos que escribir finalizaproceso nombre y se mostrará la cuadrícula a la espera de confirmación de finalización. Por ejemplo si tenemos abierto el notepad escribimos:
finalizaproceso note
Y se nos mostrará la ventana a espera de que seleccionemos y pulsemos enter para finalizar el proceso.
Hay muchas posibilidades, puedes explorarlas y dejar un comentario ;-).