En PowerShell hay varias formas de mostrar el resultado de uno o varios comandos.
Cuando ejecutamos un proceso por defecto, la salida, se muestra con una canalización al cmdlet Out-Default
PowerShell decide como mostrar el resultado dependiendo del tipo de objeto resultante. Se basa en la configuración que se indica en los archivos de configuración que se encuentran en la carpeta $pshome. Dependiendo esas reglas definidas en esos archivos, PowerShell muestra el resultado de una forma u otra.
Por ejemplo:
1 |
Get-Service s* | Select-object -First 5 |
Vemos que muestra el resultado en una tabla
1 |
Get-Service s* | Select-object Name, Displayname, Status, CanStop, CanPauseAndContinue -First 5 |
Ahora el mismo conjunto de objetos se muestran de una forma diferente
Normalmente, para mostrar el resultado de una forma u otra, se sigue el siguiente proceso:
- ¿El tipo de objeto tiene una vista predefinida?
- List
- Table
- Wide
- Custom
- ¿Hay un conjunto de propiedades predefinidas?
- Si: se muestran las predefinidas
- No: se muestran todas
- ¿Cuantas propiedades se muestran?
- 4 o menos: se muestra en formato de tabla
- 5 o más. se muestra en formato de lista
También tenemos la opción de decidir nosotros como queremos que sea la salida, siempre que la indiquemos al final de la canalización de comandos.
Format-table
Muestra el resultado en formato de tabla. Dependiendo de la cantidad de información a mostrar puede que oculte parte de ella.
Permite personalizar la vista:
- Seleccionando las propiedades a mostrar, por ejemplo:
1 |
Get-Service s* | Format-Table Name, DisplayName, Status, CanStop, CanPauseAndContinue |
- Creando propiedades personalizadas
1 |
Get-Service s* | Sort-Object Status | Format-Table Name, DisplayName, @{Name="Estado";Expression={if ($_.status -eq "running") {"Ejecutando"} else {"Parado"}}} |
- Agrupando el resultado por una propiedad
1 |
Get-Service s* | Sort-Object Status | Format-table Name, DisplayName, Status -GroupBy Status |
- Ajustar el contenido al tamaño de la vista (Wrap y Autosize) para intentar mostrar todo el contenido
1 |
Get-Service s* | Sort-Object Status | Format-Table Name, DisplayName, @{Name="Estado";Expression={if ($_.status -eq "running") {"Ejecutando"} else {"Parado"}}} -Wrap |
1 |
Get-Service s* | Sort-Object Status | Format-Table Name, DisplayName, @{Name="Estado";Expression={if ($_.status -eq "running") {"Ejecutando"} else {"Parado"}}} -Autosize |
Format-list
En este caso muestra la información en formato lista
Podemos:
- Seleccionar las propiedades a mostrar
1 |
Get-Service s* | Sort-Object -First 5 | Format-List Name, DisplayName, Status, CanStop, CanPauseAndContinue |
- Crear propiedades personalizadas
1 |
Get-Service s* | Sort-Object Status | Sort-Object Status | Format-List Name, DisplayName, @{Name="Estado";Expression={if ($_.status -eq "running") {"Ejecutando"} else {"Parado"}}} -Autosize |
- Agrupar los datos
1 |
Get-Service s* | Sort-Object Status | Format-Table Name, DisplayName, @{Name="Estado";Expression={if ($_.status -eq "running") {"Ejecutando"} else {"Parado"}}} -Autosize |
Format-Wide
Permite mostrar la información en una o varias columnas pero únicamente de una de las propiedades de los objetos
En este caso podemos:
- Seleccionar la propiedad a mostrar
1 |
Get-Service s* | Sort-Object Status | Format-Wide DisplayName |
- Seleccionar el número de columnas
1 |
Get-Service s* | Sort-Object Status | Format-Wide DisplayName -Column 3 |
- Agrupar los datos por una propiedad
1 |
Get-Service s* | Sort-Object Status | Format-Wide DisplayName -GroupBy Status |
Temas
- Introducción
- Instalación y requerimientos
- Ayuda
- Ampliando la funcionalidad
- Canalización
- Operadores
- Comandos básicos
- Formato de salida
- Importar y Exportar datos
- Arrays y HashTables
- Ejecución de Scripts
- Providers
- Trabajos
- Scripts y funciones
- Gestión de Errores
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Buenas,
La primera sentencia escrita en el apartado “Format-List” es incorrecta:
Aparece:
Get-Service s* | Sort-Object -First 5 | Format-List Name, DisplayName, Status, CanStop, CanPauseAndContinue
Debería ser:
Get-Service s* | Select-Object -First 5 | Format-List Name, DisplayName, Status, CanStop, CanPauseAndContinue
Un saludo y gracias por toda la info de esta web 😉
Gracias a ti, lo revisaremos 😉