Using PowerShell to report on Distribution Group Membership in Exchange Server

Home > Blogs > Exchange Server > Using PowerShell to report on Distribution Group Membership in Exchange Server

Using PowerShell to report on Distribution Group Membership in Exchange Server

1 7 Mike Pfeiffer
Added by January 13, 2013

Using PowerShell to Report on Distribution Group Membership in Exchange Server
Instructor: Mike Pfeiffer.

First, I’m going to take a look at my distribution groups that I currently have by running Get-DistributionGroup.


You could see that I’ve got two groups Sales and Marketing. If I want to look at the members of those groups I can type Get-DistributionGroupMember sales and it gives me that list.


Or I could say give me everybody that is in marketing Get-DistributionGroupMember marketing and there’s that list.


What I might want to export this to an actual report csv or html or something like that. You might think that you could do something like Get-DistributionGroup. So I’ll use get all the groups, pipe that over to Get-DistributionGroupMember.

Get-DistributionGroup | Get-DistributionGroupMember

It seems like that would work but what you get back here after hitting enter is a list of users.


We have no real idea of what group they came from. So even though this produces a clean one‑liner, you really have no clear references to where that group was to where they came from.

So what you got to do is loop through this and keep track of what group they’re in before you can export this as a report. This is going to require some scripting, there’s a couple of ways that you could tackle this particular issue.

One thing I’m going to use is the foreach loop to handle this. So what I’m going to do is instead of using the pipeline I’m going to do a foreach. This is a looping construct in PowerShell. Let’s use a temporary variable to reference each group. I’m going to say foreach ($i) and all my distribution groups, I want to run the get distribution group cmdlet.


I want to do a select name and create a calculated or custom property specifying the group name.


So I will get the name of the user and then I would create my custom property so I could type name = or I could just do (n) for an abbreviation and say member and my expression. I could abbreviate that as well so just a simple e={$i.Name}.


I’ll run this and then I notice that I’m missing a keyword here for each variable (in) your command.


So let’s fix this and do that again.


We get a list of the members and we get a list of the group that they’re in and that’s easy to keep track of.


I could export this out to csv, but instead of doing an export from here, I would actually have to save this information because I’m using this loop. I’m not using the pipeline so I’ll say $groupmembers. Then once that report has been generated or that data has been gathered, I can pipe that out to a csv file with $groupmembers | Export-csv without any type information.


I run the report and after that complete second go ahead and open that file up in Excel.


The nice thing here with this is you can take advantage of Excel’s filtering capabilities.


Now I can say let me just see everybody that’s inside Sales.


That customizes that list for me or I can filter on the other one.


So if I have a large number of groups and a lot of group members, this is an easy way for me to dump this data into Excel and easily filter on it and get a bird’s eye view real quick of the information that’s out there.


Videos You May Like

Agile Methodology in Project Management

0 166 0

In this video, you will gain an understanding of Agile and Scrum Master Certification terminologies and concepts to help you make better decisions in your Project Management capabilities. Whether you’re a developer looking to obtain an Agile or Scrum Master Certification, or you’re a Project Manager/Product Owner who is attempting to get your product or … Continue reading Agile Methodology in Project Management

Creating Users and Managing Passwords in Microsoft Office 365

0 721 3

In this Office 365 training video, instructor Spike Xavier demonstrates how to create users and manage passwords in Office 365.   For instructor-led Office 365 training classes, see our course schedulle: Spike Xavier SharePoint Instructor – Interface Technical Training Phoenix, AZ 20347: Enabling and Managing Office 365    

JavaScript for C# Developers – September 24, 2014

0 495 3

Is JavaScript worth taking the time to learn if I’m a server-side .NET developer? How much of C# carries over to JavaScript? In this recorded video from Dan Wahlin’s webinar on September 24,2014, Dan answers these questions and more while also discussing similarities between the languages, key differences, and the future of JavaScript (ES6). If … Continue reading JavaScript for C# Developers – September 24, 2014

Write a Comment

See what people are saying...

    Share your thoughts...

    Please fill out the comment form below to post a reply.