Naveen
Naveen

Reputation: 322

Powershell Join

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

Answers (1)

Andy Arismendi
Andy Arismendi

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

Related Questions