Как развернуть (сгладить) строку в datatable, которая в одном из столбцов содержит массив?
Есть ли способ, как расширить / сгладить строку в Dataatable? У меня есть данные в переменной $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 ответ
Если вы собираетесь экспортировать в 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 ..
Я не тестировал код, поэтому могут быть некоторые ошибки. Кроме того, я не знаю, какой именно тип вашей таблицы $. Но идея должна быть ясной.