
I have written this script to get recursively the members of the distribution lists in a specific OU. It is simple if your Active Directory distribution lists contain user account.
You will have problem if your DL includes contact objects :
Technet article https://technet.microsoft.com/en-us/library/ee617193.aspx:
The Get-ADGroupMember cmdlet gets the members of an Active Directory group. Members can be users, groups, and computers.
The solution, in that case, is to use the cmdlet get-adobject. The script below extract recursively the members of the dl in a specific OU and then export the result in text files ; one text file per dl that contains members dn.
And now the script:
function Get-AllADGroupMember ($ADServer,$GroupName) { $member_array = @() Get-ADObject -Identity $GroupName -Properties member -Server $ADServer":3268" | % { $_.member | % { $member1 = $_ $member_array += $member1 if ((Get-ADObject -Identity $member1 -Server $ADServer":3268").ObjectClass -eq "group" ){ Get-AllADGroupMember $ADServer $member1 } }} return $member_array } $ADServer = "domain.net" $grouplist = get-adgroup -SearchBase "OU=Distribution Lists,DC=domain,DC=net" -filter * -Properties mail $grouplist | % { $groupname = $_.DistinguishedName $groupmail = $_.mail $arr = Get-AllADGroupMember $ADServer $groupname $arr | out-file -FilePath "c:\temp\$groupmail.txt" -Encoding unicode }
References
My Powershell script categories
- Active Directory
- Cluster
- Database
- Exchange
- Files and folders
- Hardware
- Network
- Operating System
- PKI
- SCCM
- Service and process
- Tips
- VMWare
Get Distribution list members recursively including contact objects