1
특정 조건에 따라 필드가있는 객체의 배열을 만들려고합니다. 이 코드를 실행하면동적 필드가있는 배열
$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
난 그냥 두 가지 속성을 얻을 : 나는 THS 코드가 있습니다. Item
및 Field_1
인 경우 숫자 1이 배열 변수의 첫 번째 항목이기 때문에 속성은 Field_1
입니다.
모든 속성이 Field_0
에서 Field_9
인 배열을 얻고 싶습니다. 그리고 그 값이 비어 있거나없는 경우도 있습니다.
해시 테이블을 사용하여 시도했지만 동일한 결과가 나타납니다.
단점 짝수'New-Object psobject -Property @ {Item = $ Item; ...}'Add-Member' 대신에 v2.0에 대해 (매우 느림) –
@Martin, 테이블에 "Field_0"이 없으며 Field_1 및 Item 만 Int32 유형으로 나타 났습니까? 왜 ? – LotPings
@LotPings 아마도 많은 열이 있고 마지막 열이 잘 리기 때문일 것입니다. 그러나'ft -autosize' 파이프를 생략하면 볼 수있는 필드가 있습니다. 모든 항목을 강제로 int로 만들려면 각 필드 앞에'[int]'를 쓸 수 있습니다. –