2014-03-28 103 views
0

全部,感謝問題Edit a script I found to import a list of adusers, grab their info and export back to another csv中的解決方案,我能夠想出以下腳本。腳本從csv文件中提取用戶名,連接到廣告,並將用戶組導出到不同的csv。那部分工作完美。這是我遇到問題的地方。每個用戶名/組都放在一個新行中。除了多個用戶組之外,這是完美的。因此,例如Export-csv:合併重複行

ColA  ColB 
User  Group 
bob  admin 
jeff  domain admin 
jeff  test admin 
jeff  power user 

我想是做的就是拿出按以下格式

ColA  ColB   ColC   ColD 
User  Group   Group   Group 
bob  admin 
jeff  domian admin test admin power user 

下面的方式導出我的腳本

Begin { 
Try { Import-Module ActiveDirectory -ErrorAction Stop } 
Catch { Write-Host "Unable to load Active Directory module, is RSAT installed?"; Break } 
} 

Process { 
$UserList=Get-Content C:\Userlist.csv 
$users = ForEach ($U in $UserList) 
{ $UN = Get-ADUser $U -Properties MemberOf 
$Groups = ForEach ($Group in ($UN.MemberOf)) 
{ (Get-ADGroup $Group).Name 
} 
$Groups = $Groups | Sort 
ForEach ($Group in $Groups) 
{ New-Object PSObject -Property @{ 
     Name = $UN.Name 
     Group = $Group 
    } 
} 
} 
$users | export-csv "c:\grouptest.csv" -append 
} 

可以這樣做?

+0

我編輯的數據,試圖使我的目標更加明確。 – sjustice

回答

0

除非我誤解你的目標,你只需要更換此:

ForEach ($Group in $Groups) 
{ New-Object PSObject -Property @{ 
     Name = $UN.Name 
     Group = $Group 
    } 
} 

與此:

New-Object PSObject -Property @{ 
    Name = $UN.Name 
    Group = $Groups 
} 
+0

當我這樣做時,我只得到第一組,但是更進一步,它給了我完整的傑出名稱。 – sjustice

+0

@sjustice'$ Group'應該是'$ Groups'。除此之外,代碼在我測試時工作。不過,如果你希望屬性「Group」是一個單獨的字符串,你可以''加入'$ Groups'數組的元素。 –

+0

謝謝,我回去並努力了。我確實得到它的工作。工作方式與你所做的一樣是有問題的。 :)我得到的是一個電子表格,每個用戶只有一個組,不管他們是否有多個組。不過,我認爲你的-join命令在我真正想要的地方正確的道路上。我會讓你知道我在哪裏。我不知道你是否看到它,但我編輯了我的原始帖子,試圖更好地解釋我之後的內容。 – sjustice