@@ -8,45 +8,58 @@ function ConvertTo-Table {
88 )]
99 $Content ,
1010
11- [switch ]$NoHeader
11+ [Switch ]$Vertical ,
12+
13+ [Switch ]$NoHeader
1214 )
1315
1416 BEGIN {
1517 Write-Verbose " [$ ( $MyInvocation.MyCommand.Name ) ] Function started"
1618
17- $RowArray = New-Object System.Collections.ArrayList
19+ $sb = [ System.Text.StringBuilder ]::new()
1820 }
1921
2022 PROCESS {
2123 Write-Debug " [$ ( $MyInvocation.MyCommand.Name ) ] ParameterSetName: $ ( $PsCmdlet.ParameterSetName ) "
2224 Write-Debug " [$ ( $MyInvocation.MyCommand.Name ) ] PSBoundParameters: $ ( $PSBoundParameters | Out-String ) "
2325
24- If ($NoHeader ) {
25- $HeaderGenerated = $true
26- }
26+ $HeaderGenerated = $NoHeader
2727
2828 # This ForEach needed if the content wasn't piped in
2929 $Content | ForEach-Object {
30- # First row enclosed by ||, all other rows by |
31- If (! $HeaderGenerated ) {
32- $_.PSObject.Properties |
33- ForEach-Object - Begin {$Header = " " } `
34- - Process {$Header += " ||$ ( $_.Name ) " } `
35- - End {$Header += " ||" }
36- $RowArray.Add ($Header ) | Out-Null
37- $HeaderGenerated = $true
30+ If ($Vertical ) {
31+ If ($HeaderGenerated ) {$pipe = ' |' }
32+ Else {$pipe = ' ||' }
33+
34+ # Put an empty row between multiple tables (objects)
35+ If ($Spacer ) {
36+ $null = $sb.AppendLine (' ' )
37+ }
38+
39+ $_.PSObject.Properties | ForEach-Object {
40+ $row = (" $pipe {0} $pipe {1} |" -f $_.Name , $_.Value ) -replace " \|\s\s" , " | "
41+ $null = $sb.AppendLine ($row )
42+ }
43+
44+ $Spacer = $true
45+ } Else {
46+ # Header row enclosed by ||
47+ If (-not $HeaderGenerated ) {
48+ $null = $sb.AppendLine (" || {0} ||" -f ($_.PSObject.Properties.Name -join " || " ))
49+ $HeaderGenerated = $true
50+ }
51+
52+ # All other rows enclosed by |
53+ $row = (" | " + ($_.PSObject.Properties.Value -join " | " ) + " |" ) -replace " \|\s\s" , " | "
54+ $null = $sb.AppendLine ($row )
3855 }
39- $_.PSObject.Properties |
40- ForEach-Object - Begin {$Row = " " } `
41- - Process {if ($ ($_.value )) {$Row += " |$ ( $_.Value ) " } else {$Row += " | " }} `
42- - End {$Row += " |" }
43- $RowArray.Add ($Row ) | Out-Null
4456 }
4557 }
4658
4759 END {
48- $RowArray | Out-String
60+ # Return the array as one large, multi-line string
61+ $sb.ToString ()
4962
50- Write-Verbose " [$ ( $MyInvocation.MyCommand.Name ) ] Function ened "
63+ Write-Verbose " [$ ( $MyInvocation.MyCommand.Name ) ] Function ended "
5164 }
5265}
0 commit comments