Search code examples
powershellget-aduser

Pulling Users Emails with PowerShell Script


I have script that will search within an OU and display username, names, AD group and description.

$ou = 'distinguishedName of the OU'
Get-ADGroup -Filter * -SearchBase $ou -Properties Description | ForEach-Object {
    foreach($member in Get-ADGroupMember $_) {
        [pscustomobject]@{
            SamAccountName = $member.SamAccountName
            Name           = $member.Name
            GroupName      = $_.Name
            Description    = $_.Description
        }
    }
} | Export-csv C:\Users\MyUsername\Desktop\NameOfMyFile.csv -NoTypeInformation 

Going off research I believe I have to use Get-ADUser and mail attribute.

Something like:

($members in Get-ADUser $1)

Email      = $1.mail 

I have tried to alter this code and failed miserably.

Please could anyone assist?


Solution

  • If you're looking for just user object membership, instead of using Get-ADGroupMember you can use Get-ADUser querying for "users which's MemberOf attribute is equal to the group's DistinguishedName":

    $ou = 'distinguishedName of the OU'
    Get-ADGroup -Filter * -SearchBase $ou -Properties Description | ForEach-Object {
        $params = @{
            LDAPFilter = '(memberof={0})' -f $_.DistinguishedName
            Properties = 'mail'
        }
        foreach($member in Get-ADUser @params) {
            [pscustomobject]@{
                SamAccountName = $member.SamAccountName
                Name           = $member.Name
                Mail           = $member.Mail
                GroupName      = $_.Name
                Description    = $_.Description
            }
        }
    } | Export-csv C:\Users\MyUsername\Desktop\NameOfMyFile.csv -NoTypeInformation