Windows PowerShell incluye un conjunto de cmdlets que permiten controlar qué propiedades se muestran de objetos específicos. Los nombres de todos los cmdlets comienzan por el verbo Format. Permiten seleccionar una o más propiedades para mostrarlas.

Los cmdlets Format son Format-Wide, Format-List, Format-Table y Format-Custom. Solo describiremos los cmdlets Format-Wide, Format-List y Format-Table en este manual del usuario.

Cada cmdlet de formato tiene propiedades predeterminadas que se utilizarán si el usuario no especifica las propiedades concretas que desea que se muestren. También se usa en cada cmdlet el mismo nombre de parámetro, Property, para especificar las propiedades que se desea mostrar. Dado que Format-Wide sólo muestra una propiedad, su parámetro Property toma sólo un valor, pero los parámetros de propiedad de Format-List y Format-Table aceptan una lista de nombres de propiedades.

Si usa el comando Get-Process -Name powershell con dos instancias de Windows PowerShell en ejecución, obtendrá un resultado similar al siguiente:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    995       9    30308      27996   152     2.73   2760 powershell
    331       9    23284      29084   143     1.06   3448 powershell

En el resto de esta sección, exploraremos la forma de utilizar los cmdlets Format para cambiar la forma de mostrarse el resultado de este comando.

Utilizar Format-Wide para resultados con un único elemento

De forma predeterminada, el cmdlet Format-Wide muestra sólo la propiedad predeterminada de un objeto. La información asociada a cada objeto se muestra en una sola columna:

PS> Get-Process -Name powershell | Format-Wide

powershell                              powershell

También puede especificar una propiedad que no sea predeterminada:

PS> Get-Process -Name powershell | Format-Wide -Property Id

2760                                    3448

Controlar la presentación con columnas de Format-Wide

Con el cmdlet Format-Wide, puede mostrar una sola propiedad cada vez. Esto resulta útil para mostrar listas sencillas que muestren sólo un elemento por línea. Para obtener una lista sencilla, establezca el valor del parámetro Column en 1; para ello, escriba:

Get-Command Format-Wide -Property Name -Column 1

Usar 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 independiente:

PS> Get-Process -Name powershell | Format-List

Id      : 2760
Handles : 1242
CPU     : 3.03125
Name    : powershell

Id      : 3448
Handles : 328
CPU     : 1.0625
Name    : powershell

Puede especificar tantas propiedades como desee:

PS> Get-Process -Name powershell | Format-List -Property ProcessName,FileVersion
,StartTime,Id


ProcessName : powershell
FileVersion : 1.0.9567.1
StartTime   : 2006-05-24 13:42:00
Id          : 2760

ProcessName : powershell
FileVersion : 1.0.9567.1
StartTime   : 2006-05-24 13:54:28
Id          : 3448

Obtener información detallada utilizando Format-List con caracteres comodín

El cmdlet Format-List permite utilizar un carácter comodín como valor del parámetro Property correspondiente. De esta manera se puede mostrar información detallada. A menudo, los objetos contienen más información de la necesaria, que es el motivo por el que Windows PowerShell no muestra todos los valores de propiedades de manera predeterminada. Para que se muestren todas las propiedades de un objeto, utilice el comando Format-List -Property *. El siguiente comando genera más de 60 líneas de resultados de un solo proceso:

Get-Process -Name powershell | Format-List -Property *

Aunque el comando Format-List es útil para mostrar información detallada, si desea obtener información general de resultados que contienen muchos elementos, una vista de tabla más sencilla suele ser más conveniente.

Utilizar Format-Table para mostrar resultados con formato de tabla

Si usa el cmdlet Format-Table sin especificar nombres de propiedades para dar formato al resultado del comando Get-Process, obtendrá exactamente el mismo resultado que si no aplica ningún formato. El motivo es que los procesos se muestran normalmente en formato de tabla, como la mayoría de los objetos de Windows PowerShell.

PS> Get-Process -Name powershell | Format-Table

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
   1488       9    31568      29460   152     3.53   2760 powershell
    332       9    23140        632   141     1.06   3448 powershell

Mejorar el resultado obtenido con Format-Table (AutoSize)

Aunque la vista de tabla resulta útil para mostrar mucha información comparable, puede ser difícil de interpretar si la presentación es demasiado estrecha para los datos. Por ejemplo, si intenta mostrar la ruta de acceso del proceso, el Id., el nombre y la compañía, las columnas de ruta de acceso del proceso y de compañía aparecerán truncadas:

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company

Path                Name                                 Id Company
----                ----                                 -- -------
C:\Program Files... powershell                         2836 Microsoft Corpor...

Si especifica el parámetro AutoSize al ejecutar el comando Format-Table, Windows PowerShell calculará los anchos de columna en función de los datos reales que se desea mostrar. De esta manera podrá leerse la columna Path, pero los valores de la columna Company seguirán mostrándose truncados:

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company -
AutoSize

Path                                                    Name         Id Company
----                                                    ----         -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe powershell 2836 Micr...

El cmdlet Format-Table puede seguir truncando los datos, pero sólo al final de la pantalla. Se proporciona a las propiedades (salvo a la última mostrada) el espacio necesario para que el elemento de datos más largo se muestre correctamente. Si se intercambian las ubicaciones de Path y Company en la lista de valores de Property, se mostrará el nombre de la compañía, pero la ruta de acceso aparecerá truncada:

PS> Get-Process -Name powershell | Format-Table -Property Company,Name,Id,Path -
AutoSize

Company               Name         Id Path
-------               ----         -- ----
Microsoft Corporation powershell 2836 C:\Program Files\Windows PowerShell\v1...

El comando Format-Table supone que cuanto más próxima está una propiedad del principio de la lista de propiedades, más importante es. Por tanto, intenta mostrar en su totalidad las propiedades que estén más cerca del principio. Si el comando Format-Table no puede mostrar todas las propiedades, quitará algunas columnas de la presentación y mostrará una advertencia. Puede observar este comportamiento si establece Name como la última propiedad de la lista:

PS> Get-Process -Name powershell | Format-Table -Property Company,Path,Id,Name -
AutoSize

WARNING: column "Name" does not fit into the display and was removed.

Company               Path                                                    I
                                                                              d
-------               ----                                                    -
Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\powershell.exe 6

En el resultado anterior, la columna de Id. se muestra truncada, de forma que quepa en la lista, y los encabezados de columna se muestran apilados. El ajuste automático del tamaño de las columnas no siempre proporciona los resultados deseados.

Ajustar en columnas el resultado obtenido con Format-Table (Wrap)

Puede forzar que los datos largos de Format-Table se ajusten a su columna correspondiente usando el parámetro Wrap. Es posible que los resultados no sean los esperados si se utiliza únicamente el parámetro Wrap, ya que este aplica valores predeterminados si no se especifica también AutoSize:

PS> Get-Process -Name powershell | Format-Table -Wrap -Property Name,Id,Company,
Path

Name                                 Id Company             Path
----                                 -- -------             ----
powershell                         2836 Microsoft Corporati C:\Program Files\Wi
                                        on                  ndows PowerShell\v1
                                                            .0\powershell.exe 

Una ventaja de usar el parámetro Wrap solo es que no ralentiza demasiado el procesamiento. Si usa AutoSize y crea una lista recursiva de archivos de un gran sistema de directorios, es posible que este proceso tarde mucho tiempo en completarse y consuma gran cantidad de memoria antes de que se muestren los primeros elementos de salida.

Si la carga del sistema no es un problema, entonces AutoSize funciona bien con el parámetro Wrap. A las columnas iniciales se les asigna siempre el ancho necesario para mostrar los elementos en una línea, como cuando se especifica AutoSize sin el parámetro Wrap. La única diferencia es que se ajusta la última columna, si es necesario:

PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I
d,Company,Path

Name         Id Company               Path
----         -- -------               ----
powershell 2836 Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\
                                      powershell.exe

Es posible que algunas columnas no se muestren si se especifican primero las columnas más anchas, por lo que lo más seguro es especificar primero los elementos de datos más cortos. En el ejemplo siguiente se ha especificado primero el elemento de ruta de acceso, que es bastante ancho, por lo que se pierde la última columna Name aunque se aplique el ajuste de línea:

 PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Path,I
d,Company,Name

WARNING: column "Name" does not fit into the display and was removed.

Path                                                      Id Company
----                                                      -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe 2836 Microsoft Corporat
                                                             ion

Organizar los resultados con formato de tabla (-GroupBy)

Otro parámetro útil para el control de los resultados con formato de tabla es GroupBy. Las listas largas con formato de tabla pueden ser difíciles de comparar. El parámetro GroupBy.agrupa el resultado en función del valor de una propiedad. Por ejemplo, podemos agrupar los procesos por compañía para facilitar la inspección, omitiendo el valor de compañía de la lista de propiedades:

PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I
d,Path -GroupBy Company


   Company: Microsoft Corporation

Name         Id Path
----         -- ----
powershell 1956 C:\Program Files\Windows PowerShell\v1.0\powershell.exe
powershell 2656 C:\Program Files\Windows PowerShell\v1.0\powershell.exe




Tabla de contenido