Как экспортировать хеш-таблицу powershell в файл CSV с помощью Export-Csv? - PullRequest
4 голосов
/ 22 февраля 2011

Как экспортировать хеш-таблицу powershell в файл CSV с помощью Export-Csv?

PS C:\>$UsersAndGroups
Name                           Value                                                                                                                                                             
----                           -----                                                                                                                                                             
user1                          {Group2}                                                                                                                    
user2                          {Group1, Group2, Group3}                                                                                                                                   
user3                          {Group3, Group4}     

Я хочу получить это в CSV-файл, где каждая пара ключ-значение находится в новой строке. Первый столбец всегда должен быть ключевым, а следующие столбцы должны быть значениями.

Как это:

|col1    col2    col3    col4   
 +------------------------------  
1|User1  Group2  
2|User2  Group1  Group2  Group3 
3|User3  Group3  Group4

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

Попробуйте что-то вроде этого:

PS> $ht = @{user1=,'Group2';user2='Group1','Group2','Group3';
            user3='Group3','Group4'}

PS> $ht.GetEnumerator() | 
     Foreach {$obj = new-object psobject -prop @{col1=$_.Name}; $_.Value | 
        Foreach {$i=2} `
                {Add-Member NoteProperty "col$i" $_ -Inp $obj; $i++} {$obj} } | 
     Sort {$_.psobject.properties.count} -desc | ConvertTo-Csv -NoTypeInformation

"col1","col2","col3","col4"
"user2","Group1","Group2","Group3"
"user1","Group2",,
"user3","Group3","Group4",
0 голосов
/ 22 февраля 2011

В одну сторону:

 $usersandgroups = @{
 user1 = @("group2")
 user2 = @("group1","group2","group3")
 user3 = @("groupt3","group4")
 }

 $exp = @("col1,col2,col3,col4")

 $usersandgroups.keys |%{
 $exp += (@($_) + $usersandgroups.$_) -join ","
 }
 $exp
 $exp  | out-file test.csv
 $imp = import-csv test.csv
 $imp | ft -auto

 col1,col2,col3,col4
 user3,groupt3,group4
 user1,group2
 user2,group1,group2,group3

 col1  col2    col3   col4  
 ----  ----    ----   ----  
 user3 groupt3 group4       
 user1 group2               
 user2 group1  group2 group3
...