Reputation: 322
I have an AD query to export all groups membership, that works perfectly.
Get-QADUser -searchRoot $OuDomain -SizeLimit 0
| Select-Object dn, sAMAccountName, @{Name="Groups";Expression={(Get-QADMemberOf $_
| Select-Object -expandProperty Name) -join ";"}}
| export-csv $FilePath | Sort-Object SamAccountName
Result :
DN SamAccountName Groups
abc.com user1 group1;group2;group3
How to export the above results in columns, like :
DN SamAccountName Groups
abc.com user1 group1
user1 group2
user1 group3
Please check http://pastebin.com/JMZ863YY
Upvotes: 1
Views: 824
Reputation: 52607
Instead of the -join, whose purpose is to keep one (user) to many (group) record, you'll need to do something like this (untested). Give it a try:
$users = Get-QADUser -searchRoot $OuDomain -SizeLimit 0
$users | Sort-Object SamAccountName | % {
$user = $_ | Select-Object dn, sAMAccountName
if ($lastDomain -eq $user.dn) {
$lastDomain = ""
} else {
$lastDomain = $user.dn
}
$groups = Get-QADMemberOf $_ | Select-Object -expandProperty Name
$groups | % {
$user2 = New-Object -TypeName PsObject -Property @{
"Domain" = $lastDomain
"sAMAccountName" = $user.sAMAccountName
"Group" = $_
}
$user2
}
} | export-csv $FilePath
Upvotes: 1