Get mailcontact if member of any group

Contributor

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,

Mark

9 Replies

Hey @Mark Louie Diaz,

 

I think this would work:

 

$Username = "user@domain.com"

 

$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.

 

Adam

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

https://gallery.technet.microsoft.com/scriptcenter/Get-Distribution-lists-2ceda593

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*

https://getappvalley.com/

https://vidmate.onl/

https://tweakbox.mobi/

@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. 

Thanks, 

 

Robert

 

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

Did you find a resolution? 

@Dominique0473 

 

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!