Get mailcontact if member of any group


Hi Tech Community,


May I ask how can I accomplish the subject? I want to know before removing a mail contact if it is a member of a Distribution group.


Best Regards,


9 Replies

Hey @Mark Louie Diaz,


I think this would work:


$Username = ""


$DistributionGroups= Get-DistributionGroup | where { (Get-DistributionGroupMember $_.Name | foreach {$_.PrimarySmtpAddress}) -contains "$Username"}

Just toss in the email address for the mail user in there, and it should return any DL that has that user.



You would need a script that cycles through all the distribution groups and members within them and list the groups that a particular member is a part of. I got this task back in the days. you can use this script to check if a user is a part of a distribution group. 

Get Distribution lists that a member is a part of

Here's a fast way to do it:


$dn = (Get-MailContact your_mail_contact).DistinguishedName

Get-Recipient -Filter "Members -eq '$dn'"


This will return all DGs, mail-enabled SGs and O365 Groups the contact might be a member of. And since it's a server-side filter, you don't need to iterate over each group.

The following will get you a cleaner list with all mailboxes followed by contacts $m = New-Object System.Collections.ArrayList $c = New-Object System.Collections.ArrayList Get-DistributionGroupMember GroupName | ForEach-Object { if($_.RecipientType.ToString().Contains("Mailbox") -eq $true) { $m.Add($_.Name) } else { if ($_.RecipientType.ToString().Contains( "Contact") -eq $true) { $c.Add($_.Name) } } } $m | Get-Mailbox | ft Name,For* $c | Get-MailContact | ft Name,For*

@Vasil Michevthe need for speed? try this...


Get-ADObject -LDAPFilter "(&(objectCategory=contact)(objectClass=contact)(memberOf=*))" -Properties Name,MemberOf,CanonicalName | ft Name,CanonicalName,memberof -wrap

@Vasil Michev 


Hey Vasil, 


On this here: 


$dn = (Get-MailContact your_mail_contact).DistinguishedName

Get-Recipient -Filter "Members -eq '$dn'"


How would i add an input file to your script? for instance i would like to run the above cmdlets on a list of 122 people. 





I am working on the same ask. @Mark Louie Diaz 

Did you find a resolution? 



This works for me:

Get-ADObject -LDAPFilter '(&(objectclass=contact)(!(memberof=*)))' -Server dc01 -SearchBase 'OU=Contacts,OU=Company,DC=work,DC=com' -Properties name

Utilizing the LDAP FIlter was smart, it allowed me to act against just the ADObjects that were Contacts with existing group memberships without rewriting the entire script. Thanks!