2012-05-02 3 views
1

거기에 datatable에서 행을 펼치거나 병합하는 방법이 있습니까? 두 개의 열이있는 변수 $ table에 데이터가 있습니다. 첫 번째 열에는 [string] 값이 저장되고 두 번째 열에는 [string] 배열 값이 저장되며 두 개 이상의 값이 들어 있습니다. 다음은 이러한 행의 예입니다.하나의 열에 배열이 들어있는 데이터 테이블에서 행을 확장 (병합)하는 방법은 무엇입니까?

DistinguishedName      GroupNames 
-----------------      ---------- 
Applications/FarmName/Notepad   {Domain\Group1, Domain\Group2} 

나는 평평하게하고 싶습니다. CSV 형식, 첫 번째 열은 "키 값"을 유지하지만 DistinguishedName 및 다른 모든 열은 GroupNames 열에서 확장 된 특정 값으로 채워집니다. 원하는 출력의 예는 다음과 같습니다 당신의 의도는 CSV로 수출

Applications/FarmName/Notepad; Domain\Group1; Domain\Group2 
+0

DataColumn에서 문자열 []을 어떻게 구합니까? 이 링크에 따르면 지원되는 배열은 Byte뿐입니다. http://msdn.microsoft.com/en-us/library/system.data.datacolumn.datatype.aspx – Paparazzi

답변

1

경우, 가능한 솔루션이 자신의 PSObject을 만들고 dynamicaly이 속성의 채우기 될 수 있습니다. 이 같은

뭔가 :

$expandedObjects = @() 
$table | % { 
    #assuming $_ reffers to actual row 

    $obj = new-object PSObject 
    $obj | Add-Member -MemberType NoteProperty -Name "DistinguishedName" -Value $_.DistinguishedName 

    $i = 0 # for dynamic property naming 
    $_.GroupNames | % { 
     # assuming $_ reffers to actual GroupName value 
     $obj | Add-Member -MemberType NoteProperty -Name $("GroupName{0}" -f $i++) -Value $_ 
    } 
    $expandedObjects += $obj 
} 
$expandedObjects | export-csv .. 

내가 코드를 테스트하지 않았기 때문에 약간의 실수가있을 수 있습니다. 또한 나는 당신의 $ 테이블이 정확한지 정확히 어떤 타입인지 모른다. 그러나 그 생각은 분명해야합니다.

+0

scriptblock이 평가되지 않는 동안 스크립트를 약간 수정해야합니다. { "GroupName {0}"-f $ i ++}는 $ ("GroupName {0}"-f $ i ++)로 대체되어야합니다. – evianton

+0

감사합니다. – jumbo