Forum Discussion
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,
Mark
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.
- Joshua BinesIron Contributor
VasilMichevthe need for speed? try this...
Get-ADObject -LDAPFilter "(&(objectCategory=contact)(objectClass=contact)(memberOf=*))" -Properties Name,MemberOf,CanonicalName | ft Name,CanonicalName,memberof -wrap
- ZK4568746Copper ContributorUtilizing 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!
- --ZiM-- .Copper Contributor
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*
- Robert BollingerIron Contributor
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
- Adam OchsSteel Contributor
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
- Clint OliveiraBrass Contributor
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
- Dominique0473Copper Contributor
I am working on the same ask. Mark Louie Diaz
Did you find a resolution?
- wskoniecznyCopper Contributor
This works for me:
Get-ADObject -LDAPFilter '(&(objectclass=contact)(!(memberof=*)))' -Server dc01 -SearchBase 'OU=Contacts,OU=Company,DC=work,DC=com' -Properties name
- Joshua BinesIron Contributor
It's funny coming across your own posts again.... I've had questions about how can this be completed for cloud only objects in Exchange Online? This should help and is much better than everything else I've seen ;) Stay safe out there! J
$allcontacts = Get-MgContact -all -Property MemberOf -ExpandProperty MemberOf $allcontactsingroup = $allcontacts | ?{$_.memberof -ne $null} #Print to Screen $allcontactsingroup | FT DisplayName,MemberOf #Export to CSV with some Funkyness (is that even a word?) $allcontactsingroup | Select *, @{Name = 'MemberOfToString'; Expression = {$($_.MemberOf.id -join ',')}} | export-csv contactsingroup.csv