Búsqueda de sitios web

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…

Artículos relacionados