• 11/22/2019
  • 5 minutos de lectura
    • j
    • s
    • b
    • m

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 Format., Le permiten seleccionar qué propiedades desea mostrar.

Get-Command -Verb Format -Module Microsoft.PowerShell.Utility

en Este artículo se describe el Format-Wide, Format-List y Format-Table cmdlets.

cada tipo de objeto en PowerShell tiene propiedades predeterminadas que se utilizan cuando no se especifica qué propiedades mostrar. Cada cmdlet también usa el mismo parámetro de propiedad para especificar qué propiedades desea mostrar., Dado que Format-Widesolo muestra una sola Propiedad, su Propertyparameter solo toma un solo valor, pero los parámetros de propiedad de Format-Listy Format-Table aceptan una lista de nombres de propiedad.

en este ejemplo, la salida predeterminada del cmdlet Get-Process muestra que tenemos dos instancias de Internet Explorer en ejecución.,

Get-Process -Name iexplore

el formato predeterminado para los objetos de 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

usando Format-Wide para la 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-HexFormat-List Format-TableFormat-Wide

También puede especificar una propiedad No predeterminada:

Get-Command -Verb Format | Format-Wide -Property Noun
Custom HexList TableWide

control pantalla de formato amplio con columna

con el cmdlet Format-Wide, solo puede mostrar una sola propiedad a la vez. Esto hace que sea útil para mostrar listas grandes en varias columnas.,

Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom Hex ListTable Wide

usando Format-List para una vista de Lista

el cmdlet Format-List muestra un objeto en forma de listado, con cada propiedad etiquetaday mostrada en una línea separada:

Get-Process -Name iexplore | Format-List
Id : 12808Handles : 578CPU : 13.140625SI : 1Name : iexploreId : 21748Handles : 641CPU : 3.59375SI : 1Name : iexplore

puede especificar tantas propiedades como desee:

Get-Process -Name iexplore | Format-List -Property ProcessName,FileVersion,StartTime,Id

obtener información detallada utilizando Format-List con comodines

El Format-List el cmdlet permite usar un comodín como valor de su parámetro de propiedad., Esto le permite mostrar información detallada. A menudo, los objetos incluyen más información de la que necesita, por lo que 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 visión general de la salida que incluye muchos elementos, una vista tabular más simple es a menudo más útil.,

uso de Format-Table para la salida Tabular

Si utiliza el cmdlet Format-Table sin nombres de propiedad especificados para formatear la salida del comandoGet-Process, obtendrá exactamente la misma salida que sin un cmdlet Format. Por defecto, PowerShell muestra los objetos de proceso en un formato tabular.

Get-Service -Name win* | Format-Table

mejorar la salida de la tabla de formato (tamaño automático)

aunque una vista tabular es útil para mostrar mucha información, puede ser difícil de interpretar si la pantalla es demasiado estrecha para los datos., En el ejemplo anterior, la salida iuncated. Si especifica el parámetro AutoSize cuando ejecuta el comando Format-Table, PowerShell calcula el ancho de columna en función de los datos reales que se muestran. Esto hace que las columnas sean legibles.

Get-Service -Name win* | Format-Table -AutoSize

el cmdlet Format-Table todavía puede truncar los datos, pero solo se trunca al final de la pantalla. Las propiedades, aparte de la última mostrada, tienen 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

el comando Format-Table asume que las propiedades se enumeran en orden de importancia. Por lo que 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 pantalla. Puede ver este comportamiento en el ejemplo anterior de la propiedad dependentservices.

Wrapping Format-Table Output in Columns (Wrap)

puede forzar que los datos largos Format-Table se envuelvan dentro de su columna de visualización mediante el Wrapparameter., Usar el parámetro Wrap puede no hacer lo que espera, ya que usa la configuración predeterminada si no especifica también AutoSize:

Get-Service -Name win* | Format-Table -Property Name,Status,StartType,DisplayName,DependentServices -Wrap

usar el parámetro Wrap por sí mismo no ralentiza mucho el procesamiento. Sin embargo, usar autosize para formatear una lista recursiva de archivos de una estructura de directorios grande puede tomar mucho tiempo y usar 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 finalcolumn está envuelta, si es necesario.

Nota

Es posible que algunas columnas no se muestren al especificar primero las columnas más anchas. Para obtener los mejores resultados,especifique primero los elementos de datos más pequeños.

en el siguiente ejemplo, primero especificamos las propiedades más anchas.

Get-Process -Name iexplore | Format-Table -Wrap -AutoSize -Property FileVersion,Path,Name,Id

incluso con la envoltura, la columna Id final se omite:

organizar la salida de la tabla (-GroupBy)

otro parámetro útil para el control de salida tabular es GroupBy., Listados tabulares Más largos enparticular pueden ser difíciles de comparar. El parámetro GroupBy agrupa la salida en función de un propertyvalue. Por ejemplo, podemos agrupar los servicios por StartType para facilitar la inspección, omitiendo el valor starttype de la lista de propiedades:

Get-Service -Name win* | Sort-Object StartType | Format-Table -GroupBy StartType