One of the simplest things in Exchange, is to query email distribution groups from the GUI management console, or with one PowerShell command. So why bothering to blog or script about it?
Well, sometimes, you get a project to standardize mailing groups names, or to assign a manager to each mailing group so he can manage it.
Sometimes, you want to get an overall view (statistics) in nice format to present in the Exchange quarter meeting (i hope you have such meetings !) , or may be you want to find out which mailing groups are empty and need cleanup.
In all cases, you just need to run a script , identify where you stand in regards to mailing groups, and evaluate if there is something need to be done or not. Nothing can go bad if you have an overview script to generate such report at least once.
You can download the script from here http://sdrv.ms/15EKakm
Running the Script from Exchange PowerShell Console Experience
You can schedule the script to run in a certain schedule and get nice email reports, or just run it directly without any switches from the Exchange PowerShell console from an account that is member of the Exchange View Only group.
You need only to modify the SMTP setting in the (Customize Script) section to receive the output email report.
The script when run form PowerShell Console, give you a nice and rich experience, where it will list the script description, version , and will breakdown in real time every operation that is running and when possible, a progress bar for long running tasks.
Finally, the script will give you a timer with the time spent in certain tasks in a nice friendly way.
By running the script, you will get an email with HTML table that contains organization statistics for groups and two attached csv files. One for extensive information for non dynamic groups, and one for dynamic groups.
Summary Statistics includes:
-Total Number of Distribution Groups and Total Number of Dynamic Groups
-Number of Empty Groups
-Number of groups that requires Sender Authentication
-Number of empty groups
-Number of groups without manager
-Number of (Open to Join) groups
-Number of (Approve to Join) groups
-Number of (Closed to join) groups
-Number of (Open to depart) groups
-Number of (Closed to depart) groups
-Number of invalid groups
-Number of Moderated Groups
Two CSV files, one for dynamic groups and one for non dynamic groups. Each CSV File contains info about each group including:
-Group Member Count
-Group Parent OU
-Group Hidden or not
-Group Moderated or not
-Group Requiring Sender Authentication or not
-Group valid or not
-Group Type ( universal, global,…) and (security enabled or not)
-Group Empty or not
-Group contains nested groups or not
You just download and run the script from Exchange PowerShell console with account that has View access to Exchange data. The script will take long time to run (about an hour for medium environment that have 4000 mail groups
The script is a modified version from Serkan Varoğlu script. instead of viewing all data in HTML format, i exported all info in Excel files and aggregate data differently.
Please visit his own script version here and have a look : http://gallery.technet.microsoft.com/scriptcenter/Generate-HTML-Report-for-57ed7b33