Uso de comandos de formato para cambiar la vista de salida
PowerShell tiene un conjunto de cmdlets que le permiten controlar cómo se muestran las propiedades de objetos particulares. Los nombres de todos los cmdlets comienzan con el verbo Formato. Te permiten seleccionar qué propiedades quieres mostrar.
Get-Command -Verb Format -Module Microsoft.PowerShell.Utility
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Format-Custom 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Hex 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-List 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Table 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Wide 6.1.0.0 Microsoft.PowerShell.Utility
Este artículo describe los cmdlets Format-Wide, Format-List y Format-Table.
Cada tipo de objeto en PowerShell tiene propiedades predeterminadas que se usan cuando no se seleccionan las propiedades para mostrar. Cada cmdlet utiliza el mismo parámetro Property para especificar qué propiedades desea mostrar. Debido a que Format-Wide solo muestra una única propiedad, su parámetro Property solo toma un único valor, pero los parámetros de propiedad de Format-List y Format-Table acepta una lista de nombres de propiedades.
En este ejemplo, la salida predeterminada del cmdlet Get-Process muestra que tenemos dos instancias de Internet Explorer ejecutándose.
Get-Process -Name iexplore
El formato predeterminado para los objetos Proceso muestra las propiedades que se muestran aquí:
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
32 25.52 10.25 13.11 12808 1 iexplore
52 11.46 26.46 3.55 21748 1 iexplore
Uso de todo el formato para salida de un solo elemento
El cmdlet Format-Wide, de forma predeterminada, muestra solo la propiedad predeterminada de un objeto. La información asociada a cada objeto se muestra en una sola columna:
Get-Command -Verb Format | Format-Wide
Format-Custom Format-Hex
Format-List Format-Table
Format-Wide
También puede especificar una propiedad no predeterminada:
Get-Command -Verb Format | Format-Wide -Property Noun
Custom Hex
List Table
Wide
Controlar la visualización de todo el formato con columna
Con el cmdlet Format-Wide, solo puede mostrar una propiedad a la vez. Esto lo hace útil para mostrar listas grandes en varias columnas.
Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom Hex List
Table Wide
Usando Format-List para una vista de lista
El cmdlet Format-List muestra un objeto en forma de lista, con cada propiedad etiquetada y mostrada en una línea separada:
Get-Process -Name iexplore | Format-List
Id : 12808
Handles : 578
CPU : 13.140625
SI : 1
Name : iexplore
Id : 21748
Handles : 641
CPU : 3.59375
SI : 1
Name : iexplore
Puede especificar tantas propiedades como desee:
Get-Process -Name iexplore | Format-List -Property ProcessName,FileVersion,StartTime,Id
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime : 10/22/2019 11:23:58 AM
Id : 12808
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime : 10/22/2019 11:23:57 AM
Id : 21748
Obtener información detallada usando Format-List con comodines
El cmdlet Format-List le permite utilizar un comodín como valor de su parámetro Property. Esto le permite mostrar información detallada. A menudo, los objetos incluyen más información de la que necesita, razón por la cual PowerShell no muestra todos los valores de propiedad de forma predeterminada. Para mostrar todas las propiedades de un objeto, utilice el comando Format-List -Property *. El siguiente comando genera más de 60 líneas de salida para un solo proceso:
Get-Process -Name iexplore | Format-List -Property *
Aunque el comando Format-List es útil para mostrar detalles, si desea una descripción general de la salida que incluye muchos elementos, una vista tabular más simple suele ser más útil.
Uso de Format-Table para salida tabular
Si utiliza el cmdlet Format-Table sin nombres de propiedad especificados para formatear la salida del comando Get-Process, obtendrá exactamente el mismo resultado que sin un < código>Formato cmdlet. De forma predeterminada, PowerShell muestra objetos Proceso en formato tabular.
Get-Service -Name win* | Format-Table
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running WinHttpAutoProx... WinHTTP Web Proxy Auto-Discovery Se...
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Manag...
Nota
Get-Service solo está disponible en plataformas Windows.
Mejora de la salida de formato de tabla
Aunque una vista tabular es útil para mostrar mucha información, puede resultar difícil de interpretar si la visualización es demasiado estrecha para los datos. En el ejemplo anterior, la salida está truncada. Si especifica el parámetro AutoSize cuando ejecuta el comando Format-Table, PowerShell calcula el ancho de las columnas en función de los datos reales mostrados. Esto hace que las columnas sean legibles.
Get-Service -Name win* | Format-Table -AutoSize
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running WinHttpAutoProxySvc WinHTTP Web Proxy Auto-Discovery Service
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Management)
Es posible que el cmdlet Format-Table aún trunque los datos, pero solo lo hace al final de la pantalla. A las propiedades, distintas de la última mostrada, se les asigna el tamaño que necesitan para que su elemento de datos más largo se muestre correctamente.
Get-Service -Name win* |
Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -AutoSize
Name Status StartType DisplayName DependentServi
ces
---- ------ --------- ----------- --------------
WinDefend Running Automatic Windows Defender Antivirus Service {}
WinHttpAutoProxySvc Running Manual WinHTTP Web Proxy Auto-Discovery Service {NcaSvc, iphl…
Winmgmt Running Automatic Windows Management Instrumentation {vmms, TPHKLO…
WinRM Running Automatic Windows Remote Management (WS-Management) {}
El comando Format-Table supone que las propiedades se enumeran en orden de importancia. El cmdlet intenta mostrar completamente las propiedades más cercanas al principio. Si el comando Format-Table no puede mostrar todas las propiedades, elimina algunas columnas de la visualización. Puede ver este comportamiento en el ejemplo anterior de la propiedad DependentServices.
Ajustar la salida de formato-tabla en columnas
Puede forzar que los datos Format-Table extensos se ajusten dentro de su columna de visualización utilizando el parámetro Wrap. Es posible que el uso del parámetro Wrap no funcione como esperaba, ya que utiliza la configuración predeterminada si no especifica también AutoSize:
Get-Service -Name win* |
Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -Wrap
Name Status StartType DisplayName DependentServi
ces
---- ------ --------- ----------- --------------
WinDefend Running Automatic Windows Defender Antivirus Service {}
WinHttpAutoProxySvc Running Manual WinHTTP Web Proxy Auto-Discovery Service {NcaSvc,
iphlpsvc}
Winmgmt Running Automatic Windows Management Instrumentation {vmms,
TPHKLOAD,
SUService,
smstsmgr…}
WinRM Running Automatic Windows Remote Management (WS-Management) {}
El uso del parámetro Wrap por sí solo no ralentiza mucho el procesamiento. Sin embargo, utilizar AutoSize para formatear un listado de archivos recursivo de una estructura de directorio grande puede llevar mucho tiempo y utilizar mucha memoria antes de mostrar los primeros elementos de salida.
Si no le preocupa la carga del sistema, AutoSize funciona bien con el parámetro Wrap. Las columnas iniciales todavía usan tanto ancho como sea necesario para mostrar elementos en una línea, pero la columna final se ajusta, si es necesario.
Nota
Es posible que algunas columnas no se muestren cuando especifica primero las columnas más anchas. Para obtener mejores resultados, especifique primero los elementos de datos más pequeños.
En el siguiente ejemplo, especificamos primero las propiedades más amplias.
Get-Process -Name iexplore |
Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id
Incluso con el ajuste, se omite la columna Id final:
FileVersion Path Nam
e
----------- ---- ---
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE iex
plo
re
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files\Internet Explorer\iexplore.exe iex
plo
re
Organizar la salida de la tabla
Otro parámetro útil para el control de salida tabular es GroupBy. En particular, las listas tabulares más largas pueden resultar difíciles de comparar. El parámetro GroupBy agrupa la salida según un valor de propiedad. Por ejemplo, podemos agrupar servicios por StartType para una inspección más sencilla, omitiendo el valor StartType del listado de propiedades:
Get-Service -Name win* | Sort-Object StartType | Format-Table -GroupBy StartType
StartType: Automatic
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Managem…
StartType: Manual
Status Name DisplayName
------ ---- -----------
Running WinHttpAutoProxyS… WinHTTP Web Proxy Auto-Discovery Serv…