为了能够将数组作为列,您需要“转置”您的哈希表,这意味着您需要构建具有用户名(哈希表的键)作为属性的单个对象。您需要创建的对象数由数组中的最大元素数定义。
基本上,您需要将哈希表拆分为多个哈希表,其中每个哈希表的所有键都只有一个字符串值,而不是字符串数组。本质上,您需要对其进行转换:
@{
'user1' = 'Domain Users', 'group2', 'group3'
'user2' = 'Domain Users', 'group4'
'user3' = 'Domain Users', 'group2', 'group3', 'group4'
}
进入这个:
@{'user1' = 'Domain Users'; 'user2' = 'Domain Users'; 'user3' = 'Domain Users'}
@{'user1' = 'group2'; 'user2' = 'group4'; 'user3' = 'group2'}
@{'user1' = 'group3'; 'user2' = ''; 'user3' = 'group3'}
@{'user1' = ''; 'user2' = ''; 'user3' = 'group4'}
并从这些单独的哈希表创建对象。
$ht = @{
'user1' = 'Domain Users', 'group2', 'group3'
'user2' = 'Domain Users', 'group4'
'user3' = 'Domain Users', 'group2', 'group3', 'group4'
}
# list array lengths and get highest number
$cnt = $ht.Values |
ForEach-Object { $_.Count } |
Sort-Object |
Select-Object -Last 1
$keys = $ht.Keys | Sort-Object
0..($cnt-1) | ForEach-Object {
$props = [ordered]@{}
foreach ($key in $keys) {
$props[$key] = $ht[$key][$_]
}
New-Object -Type PSObject -Property $props
} | Export-Csv 'C:\path\to\output.csv' -NoType