Format-Table on Array of Hash Tables

PowershellFormatting

Powershell Problem Overview


How do you format an array of hash tables with the Format-Table cmdlet?

Example:

$table = @( @{ColumnA="Able";    ColumnB=1},
            @{ColumnA="Baker";   ColumnB=2},
            @{ColumnA="Charlie"; ColumnB=3} )
$table | Format-Table

Desired Output:

ColumnA                        ColumnB
----                           -----
Able                           1
Baker                          2
Charlie                        3

Actual Output:

Name                           Value
----                           -----
ColumnA                        Able
ColumnB                        1
ColumnA                        Baker
ColumnB                        2
ColumnA                        Charlie
ColumnB                        3

Powershell Solutions


Solution 1 - Powershell

Using Powershell V4:

$table = @( @{ColumnA="Able";    ColumnB=1},
            @{ColumnA="Baker";   ColumnB=2},
            @{ColumnA="Charlie"; ColumnB=3} )

$table | ForEach {[PSCustomObject]$_} | Format-Table -AutoSize


ColumnA ColumnB
------- -------
Able          1
Baker         2
Charlie       3

V2 solution:

$(foreach ($ht in $table)
 {new-object PSObject -Property $ht}) | Format-Table -AutoSize

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJoseph SturtevantView Question on Stackoverflow
Solution 1 - PowershellmjolinorView Answer on Stackoverflow