如何在一个列包含数组的数据表中展开(展平)行?

时间:2012-05-02 16:15:25

标签: .net powershell datatable system.array

有没有办法在数据表中展开/展平行?我有变量$ table中的数据有2列。在第一列中存储[string]值,而在第二列中存储[string []]数组值,其中包含至少2个值。这是一个这样的行的例子:

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

我想把它弄平并导出到例如CSV格式,第一列保留“键值”DistinguishedName,所有其他列都填充了从GroupNames列扩展的特定值。所需输出的示例如下:

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

1 个答案:

答案 0 :(得分:1)

如果您打算导出到csv,可能的解决方案可能是创建自己的PSObject并动态填充它的属性。

这样的事情:

$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 ..

我没有测试代码,所以可能会有一些错误。另外我不知道你的$ table可靠的是什么类型。但这个想法应该是明确的。