PowerShell Format-Table: Organizar la salida en columnas

PowerShell tiende la mano bastante a los desarrolladores, pero no puede leer tu mente. No puede saber inherentemente qué tipo de resultado estás buscando. Proporcionará su mejor suposición a través de un formato predeterminado, pero depende de ti decidir cómo deseas que se devuelva el resultado. Usando el cmdlet Format-Table de PowerShell, puedes ajustar la salida a tu gusto.

PowerShell tiene un sistema de formato que tiene una salida predeterminada y la capacidad de cambiar cómo se formatea la salida en función del tipo de objeto. Si prefieres no aprender acerca de XML y cómo formatear siempre la salida de una manera específica, también tienes a tu disposición cmdlets como Format-Table, Format-List y Format-Wide. Un archivo PS1XML en el sistema de archivos o el uso de cualquiera de los cmdlets de formato mostrará la salida de diferentes maneras.

Sin usar ningún formato especial, PowerShell, de forma predeterminada, utiliza su propio formato. Siempre que se devuelve un objeto específico, probablemente solo verás una parte limitada de los contenidos reales de ese objeto. Por ejemplo, al mirar solo una carpeta, solo verás el directorio principal y algunos atributos.

PS> Get-Item -Path C:\Windows\

Directory: C:\
Mode	LastWriteTime		Length	Name
---- 	------------- 		------	----

d-----	11/24/2017 9:57 AM 			Windows

Pero, si aplicas el mismo comando a través de un pipe a Select-Object -Property *, observa qué sucede.

PS> Get-Item -Path C:\Windows\ | Select-Object -Property *

PSPath 				: Microsoft.PowerShell.Core\FileSystem::C:\Windows\
PSParentPath 		: Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName 		: Windows
PSDrive				: C
PSProvider 			: Microsoft.PowerShell.Core\FileSystem
PSIsContainer 		: True
Mode 				: d-----
BaseName 			: Windows
Target 				: {C:\Windows}
LinkType 			:
Name 				: Windows
FullName 			: C:\Windows\
Parent 				:
Exists 				: True
Root 				: C:\
Extension 			:
CreationTime 		: 3/18/2017 5:40:20 AM
CreationTimeUtc 	: 3/18/2017 11:40:20 AM
LastAccessTime 		: 11/24/2017 9:57:51 AM
LastAccessTimeUtc	: 11/24/2017 3:57:51 PM
LastWriteTime 		: 11/24/2017 9:57:51 AM
LastWriteTimeUtc 	: 11/24/2017 3:57:51 PM
Attributes 			: Directory

PowerShell ha ocultado muchas de las propiedades del objeto porque normalmente no necesitas ver toda esta información. PowerShell proporciona una vista predeterminada, pero eso no significa que sea tu única opción. Podemos cambiar esta vista a través de un cmdlet de formato.

El cmdlet de formato más popular es Format-Table. Según la ayuda de PowerShell:

El cmdlet Format-Table formatea la salida de un comando como una tabla con las propiedades seleccionadas del objeto en cada columna. El tipo de objeto determina el diseño predeterminado y las propiedades que se muestran en cada columna, pero puedes usar el parámetro Property para seleccionar las propiedades que deseas ver.

También puedes usar una tabla hash para agregar propiedades calculadas a un objeto antes de mostrarlo y especificar los encabezados de columna en la tabla. Para agregar una propiedad calculada, usa el parámetro Property o GroupBy.

Usar Powershell Format-Table y Select-Object para seleccionar propiedades individuales del objeto parece ser lo mismo siempre y cuando los valores de las propiedades no excedan el ancho de la consola actual. Pero tan pronto como intentes mostrar muchos objetos, verás que Format-Table mantiene el formato tabular mientras que Select-Object vuelve a mostrar las propiedades en cada línea.

PS> Get-Item -Path C:\Windows\ | Select-Object -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime 	: 11/24/2017 9:57:51 AM
Name 			: Windows
LastWriteTime 	: 11/24/2017 9:57:51 AM
PSProvider 		: Microsoft.PowerShell.Core\FileSystem
CreationTime 	: 3/18/2017 5:40:20 AM

PS> Get-Item -Path C:\Windows\ | Format-Table -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime			Name	LastWriteTime			PSProvider	CreationTime
-------------- 			---- 	------------- 			---------- 	------------
11/24/2017 9:57:51 AM 	Windows 11/24/2017 9:57:51 AM	Microsoft.PowerShell.Core\FileSystem	3/18/2017 5:40:20 AM

La salida de Powershell Format-Table intentará mostrar información siempre mediante un formato tabular. Si los valores de las propiedades son demasiado largos para mostrarse, reemplazará cualquier texto faltante con puntos suspensivos para indicar que hay más información disponible pero simplemente no se muestra.

El cmdlet Format-Table tiene muchas formas diferentes de manipular la salida. Consulta la documentación completa de Format-Table a través de Microsoft docs.

Source:
https://adamtheautomator.com/powershell-format-table/