If the below only has 4 columns, I get a table that can be further trimmed with select. But if I add more fields, the output becomes a list.
How to make this always a table without breaking the subsequent select as Format-table
does? The initial table will come from a cmdlet and the user will do the subsequent select returns a table like I want
$c = New-Object System.Collections.ArrayList
for($i = 0; $i -lt 5; $i++)
{
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "Field1" -Value "Value1"
$temp | Add-Member -MemberType NoteProperty -Name "Field2" -Value "Value2"
$temp | Add-Member -MemberType NoteProperty -Name "Field3" -Value "Value3"
$temp | Add-Member -MemberType NoteProperty -Name "Field4" -Value "Value4"
$c.Add($temp) | Out-Null
}
$c
Field1 Field2 Field3 Field4
------ ------ ------ ------
Value1 Value2 Value3 Value4
Value1 Value2 Value3 Value4
Value1 Value2 Value3 Value4
Value1 Value2 Value3 Value4
Value1 Value2 Value3 Value4
I can still use select
$c | select Field1
Field1
------
Value1
Value1
Value1
Value1
Value1
More fields will not give me a table , but a list
$c = New-Object System.Collections.ArrayList
for($i = 0; $i -lt 10; $i++)
{
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "Field1" -Value "Value1"
$temp | Add-Member -MemberType NoteProperty -Name "Field2" -Value "Value2"
$temp | Add-Member -MemberType NoteProperty -Name "Field3" -Value "Value3"
$temp | Add-Member -MemberType NoteProperty -Name "Field4" -Value "Value1"
$temp | Add-Member -MemberType NoteProperty -Name "Field5" -Value "Value2"
$temp | Add-Member -MemberType NoteProperty -Name "Field6" -Value "Value3"
$temp | Add-Member -MemberType NoteProperty -Name "Field7" -Value "Value1"
$temp | Add-Member -MemberType NoteProperty -Name "Field8" -Value "Value2"
$temp | Add-Member -MemberType NoteProperty -Name "Field9" -Value "Value3"
$c.Add($temp) | Out-Null
}
$c
Field1 : Value1
Field2 : Value2
Field3 : Value3
Field4 : Value1
Field5 : Value2
Field6 : Value3
Field7 : Value1
Field8 : Value2
Field9 : Value3
....
Using format-table I can make this look like a table
$c = New-Object System.Collections.ArrayList
for($i = 0; $i -lt 5; $i++)
{
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "Field1" -Value "Value1"
$temp | Add-Member -MemberType NoteProperty -Name "Field2" -Value "Value2"
$temp | Add-Member -MemberType NoteProperty -Name "Field3" -Value "Value3"
$temp | Add-Member -MemberType NoteProperty -Name "Field4" -Value "Value4"
$temp | Add-Member -MemberType NoteProperty -Name "Field5" -Value "Value5"
$c.Add($temp) | Out-Null
}
$c2
Field1 Field2 Field3 Field4 Field5
------ ------ ------ ------ ------
Value1 Value2 Value3 Value4 Value5
Value1 Value2 Value3 Value4 Value5
Value1 Value2 Value3 Value4 Value5
Value1 Value2 Value3 Value4 Value5
Value1 Value2 Value3 Value4 Value5
But now I can not further select
$c2 | select Field1
Field1
------