1
特定の条件に応じてフィールドを持つオブジェクトの配列を作成しようとしています。 私はTHSコードを持っている:私はこのコードを実行すると動的フィールドを持つ配列
$Array = @(1,2,3,4,5,6,3,4,5,7,9,0,8,9)
$CurrentFolder = Split-Path -parent $MyInvocation.MyCommand.Definition
$Report = @()
foreach($Item in $Array)
{
$Obj = New-Object PSObject
$Obj | Add-Member -MemberType NoteProperty -Name "Item" -Value $Item
switch ($Item)
{
1 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_1" -Value "Value_Field_1"}
2 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_2" -Value "Value_Field_2"}
3 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_3" -Value "Value_Field_3"}
4 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_4" -Value "Value_Field_4"}
5 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_5" -Value "Value_Field_5"}
6 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_6" -Value "Value_Field_6"}
7 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_7" -Value "Value_Field_7"}
8 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_8" -Value "Value_Field_8"}
9 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_9" -Value "Value_Field_9"}
0 { $Obj | Add-Member -MemberType NoteProperty -Name "Field_0" -Value "Value_Field_0"}
}
$Report = $Report + $Obj
}
$Report | ft -autosize
#$Report | Get-member
は、私はちょうど2つのプロパティを取得します。 Item
とField_1
の場合は、配列変数の最初の項目が数字1であるため、プロパティーはField_1
になります。
すべてのプロパティがField_0
からField_9
までの配列を取得したいと思います。値が空であるかどうかを確認してください。
ハッシュテーブルを使用してこれを試しましたが、同じ結果が得られました。
を使用して同じ結果を達成することもできます。新しいオブジェクトpsobject -Property @ {Item = $ Item; ...} 'Add-Member'の代わりにv2.0の場合(極端に遅い) –
@Martin、テーブルには" Field_0 "が出力されておらず、Field_1とItemだけがInt32型であることがわかりましたか?どうして ? – LotPings
@LotPingsおそらく、多くの列があり、最後の列が切り捨てられるからです。しかし、 'ft -autosize'パイプを省略すると、フィールドが表示されます。すべての項目を強制的にintにするには、各フィールドの前に '[int]'を書くことができます。 –