Usar comandos de formato para cambiar la vista de salidaUsing Format Commands to Change Output View

Windows PowerShell tiene un conjunto de cmdlets que permite controlar las propiedades que se muestran para determinados objetos.Windows PowerShell has a set of cmdlets that allow you to control which properties are displayed for particular objects. Los nombres de todos los cmdlets empiezan con el verbo Format.The names of all the cmdlets begin with the verb Format. Permiten seleccionar una o más propiedades para mostrar.They let you select one or more properties to show.

Los cmdlets Format son Format-Wide, Format-List, Format-Table y Format-Custom.The Format cmdlets are Format-Wide, Format-List, Format-Table, and Format-Custom. Solo describiremos los cmdlets Format-Wide, Format-List y Format-Table en esta guía de usuario.We will only describe the Format-Wide, Format-List, and Format-Table cmdlets in this user's guide.

Cada cmdlet de formato tiene propiedades predeterminadas que se usarán si no indica propiedades específicas para mostrar.Each format cmdlet has default properties that will be used if you do not specify specific properties to display. Asimismo, cada cmdlet usa el mismo nombre de parámetro, Property, para especificar las propiedades que se deben mostrar.Each cmdlet also uses the same parameter name, Property, to specify which properties you want to display. Dado que Format-Wide solo muestra una propiedad única, su parámetro Property solo toma un valor único, pero los parámetros de propiedad de Format-List y Format-Table aceptarán una lista de nombres de propiedad.Because Format-Wide only shows a single property, its Property parameter only takes a single value, but the property parameters of Format-List and Format-Table will accept a list of property names.

Si usa el comando Get-Process -Name powershell con dos instancias de ejecución de Windows PowerShell, obtendrá una salida similar a la siguiente:If you use the command Get-Process -Name powershell with two instances of Windows PowerShell running, you get output that looks like this:

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 cómo usar los cmdlets Format para cambiar la manera en que se muestra la salida de este comando.In the rest of this section, we will explore how to use Format cmdlets to change the way the output of this command is displayed.

Usar Format-Wide para la salida de un solo elementoUsing Format-Wide for Single-Item Output

De forma predeterminada, el cmdlet Format-Wide muestra solo la propiedad predeterminada de un objeto.The Format-Wide cmdlet, by default, displays only the default property of an object. La información asociada a cada objeto se muestra en una sola columna:The information associated with each object is displayed in a single column:

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

powershell                              powershell

También puede especificar una propiedad no predeterminada:You can also specify a non-default property:

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

2760                                    3448

Controlar la presentación de Format-Wide con ColumnControlling Format-Wide Display with Column

Con el cmdlet Format-Wide, solo puede mostrar una única propiedad a la vez.With the Format-Wide cmdlet, you can only display a single property at a time. Resulta útil para mostrar listas simples que muestren solo un elemento por línea.This makes it useful for displaying simple lists that show only one element per line. Para obtener una lista simple, establezca el valor del parámetro Column en 1. Para ello, escriba:To get a simple listing, set the value of the Column parameter to 1 by typing:

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

Usar Format-List para obtener una vista de listaUsing Format-List for a List View

El cmdlet Format-List muestra un objeto en forma de una lista, donde cada propiedad aparece etiquetada y en una línea diferente:The Format-List cmdlet displays an object in the form of a listing, with each property labeled and displayed on a separate line:

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:You can specify as many properties as you want:

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 usando Format-List con caracteres comodínGetting Detailed Information by Using Format-List with Wildcards

El cmdlet Format-List permite usar un carácter comodín como valor de su parámetro Property.The Format-List cmdlet lets you use a wildcard as the value of its Property parameter. Esto le permite visualizar información detallada.This lets you display detailed information. A menudo, los objetos incluyen más información de la que necesita, motivo por el cual Windows PowerShell no muestra todos los valores de propiedad de forma predeterminada.Often, objects include more information than you need, which is why Windows PowerShell does not show all property values by default. Para mostrar todas las propiedades de un objeto, use el comando Format-List -Property *.To show all of properties of an object, use the Format-List -Property * command. El siguiente comando genera más de 60 líneas de salida para un único proceso:The following command generates over 60 lines of output for a single process:

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

Aunque el comando Format-List resulta útil para mostrar detalles, si desea una introducción de la salida que incluya muchos elementos, una vista tabular más sencilla suele ser más útil.Although the Format-List command is useful for showing detail, if you want an overview of output that includes many items, a simpler tabular view is often more useful.

Usar Format-Table para la salida tabularUsing Format-Table for Tabular Output

Si usa el cmdlet Format-Table sin ningún nombre de propiedad especificado para formatear la salida del comando Get-Process, obtendrá exactamente la misma salida que al aplicar cualquier formato.If you use the Format-Table cmdlet with no property names specified to format the output of the Get-Process command, you get exactly the same output as you do without performing any formatting. El motivo es que los procesos se suelen mostrar en formato tabular, como la mayoría de los objetos de Windows PowerShell.The reason is that processes are usually displayed in a tabular format, as are most Windows PowerShell objects.

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 la salida de Format-Table (AutoSize)Improving Format-Table Output (AutoSize)

Aunque una vista tabular resulta útil para mostrar mucha información comparable, puede ser difícil de interpretar si la presentación es demasiado estrecha para los datos.Although a tabular view is useful for displaying a lot of comparable information, it may be difficult to interpret if the display is too narrow for the data. Por ejemplo, si intenta mostrar la ruta de acceso del proceso, el identificador, el nombre y la empresa, obtendrá una salida truncada para la ruta de acceso del proceso y la columna de la empresa:For example, if you try to display process path, ID, name, and company, you get truncated output for the process path and the company column:

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 va a mostrar.If you specify the AutoSize parameter when you run the Format-Table command, Windows PowerShell will calculate column widths based on the actual data you are going to display. Esto hace que la columna Path se pueda leer, pero la columna de la empresa sigue estando truncada:This makes the Path column readable, but the company column remains truncated:

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 todavía podría truncar datos, pero solo lo hace al final de la pantalla.The Format-Table cmdlet might still truncate data, but it will only do so at the end of the screen. Las propiedades distintas de la última que se muestra obtienen el tamaño que necesitan para que su elemento de datos más largo se muestre correctamente.Properties, other than the last one displayed, are given as much size as they need for their longest data element to display correctly. Puede ver que el nombre de la empresa es visible, pero la ruta de acceso está truncada si intercambia las ubicaciones de Path y Company en la lista de valores Property:You can see that company name is visible but path is truncated if you swap the locations of Path and Company in the Property value list:

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 cerca está una propiedad del principio de la lista de propiedades, más importante es.The Format-Table command assumes that the nearer a property is to the beginning of the property list, the more important it is. Por tanto, intenta mostrar las propiedades lo más cerca posible del principio.So it attempts to display the properties nearest the beginning completely. Si el comando Format-Table no puede mostrar todas las propiedades, quitará algunas columnas de la presentación y mostrará una advertencia.If the Format-Table command cannot display all the properties, it will remove some columns from the display and provide a warning. Puede ver este comportamiento si hace que Name sea la última propiedad de la lista:You can see this behavior if you make Name the last property in the list:

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 la salida anterior, la columna ID se ha truncado para caber en la lista y los encabezados de columna están apilados.In the output above, the ID column is truncated to make it fit into the listing, and the column headings are stacked up. El cambio automático del tamaño de las columnas no siempre produce el resultado deseado.Automatically resizing the columns does not always do what you want.

Ajustar la salida de Format-Table en columnas (Wrap)Wrapping Format-Table Output in Columns (Wrap)

Puede forzar los datos de Format-Table extensos para ajustar la columna de presentación mediante el parámetro Wrap.You can force lengthy Format-Table data to wrap within its display column by using the Wrap parameter. El parámetro Wrap solo no realizará necesariamente la acción prevista, ya que usa la configuración predeterminada si no se especifica también AutoSize:Using the Wrap parameter alone will not necessarily do what you expect, since it uses default settings if you do not also specify 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 no ralentiza en exceso el procesamiento.An advantage of using the Wrap parameter by itself is that it does not slow down processing very much. Si realiza una lista de archivo recursiva de un sistema de directorio de gran tamaño, podría tardar mucho tiempo y usar una gran cantidad de memoria antes de mostrar los primeros elementos de salida si usa AutoSize.If you perform a recursive file listing of a large directory system, it might take a very long time and use a lot of memory before displaying the first output items if you use AutoSize.

Si no le preocupa la carga del sistema, AutoSize funciona bien con el parámetro Wrap.If you are not concerned about system load, then AutoSize works well with the Wrap parameter. Siempre se asigna el ancho necesario a las columnas iniciales, ya que deben mostrar los elementos en una sola línea, al igual que cuando se especifica AutoSize sin el parámetro Wrap.The initial columns are always allotted as much width as they need to display items on one line, just as when you specify AutoSize without the Wrap parameter. La única diferencia es que la última columna se ajustará si es necesario:The only difference is that the final column will be wrapped if necessary:

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 correctamente si especifica primero las columnas más anchas, por lo que es más seguro especificar los elementos de datos más pequeños en primer lugar.Some columns might not be displayed if you specify the widest columns first, so it is safest to specify the smallest data elements first. En el siguiente ejemplo, especificamos el elemento de ruta de acceso extremadamente ancho en primer lugar y, a pesar del ajuste, perdemos la columna Name final:In the following example, we specify the extremely wide path element first, and even with wrapping, we still lose the final Name column:

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

Organización de la salida tabular (-GroupBy)Organizing Table Output (-GroupBy)

Otro parámetro útil para el control de la salida tabular es GroupBy.Another useful parameter for tabular output control is GroupBy. Las listas tabulares largas pueden ser especialmente difíciles de comparar.Longer tabular listings in particular may be hard to compare. El parámetro GroupBy agrupa la salida según un valor de propiedad.The GroupBy parameter groups output based on a property value. Por ejemplo, podemos agrupar procesos por empresa para facilitar la inspección. Para ello, se omite el valor de la empresa de la lista de propiedades:For example, we can group processes by company for easier inspection, omitting the company value from the property listing:

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