Generating Exchange Server Mailbox Statistics Reports | GUI Tool for Generating Exchange Mailboxes Statistics Reports

Let me share with you one exciting new tool for Exchange Server reporting I came across today. It’s “Exchange Server Mailbox Statistics Tool” a GUI based tool for generating reports for your Exchange Server 2010/2013 mailboxes.

This tool is developed by Srinath Sadda and you can download it from here.

Important Note:
This tool should only install on the server running Exchange Server 2010 / 2013 with active Exchange Serve role installed. Running it on any other member sever with or without Exchange Management Tools installed will not help.


Some of the following tool’s screenshots are taken from the TechNet script gallery:




Windows Server 2012 R2 Architecture Posters for Hyper-V and Building Private Cloud

Recently I came across Windows Server 2012 R2 Hyper-V and Private Cloud released Windows Server 2012 R2 related architectural posters. These architectural posters are explaining deep-dive working of new and enhanced features of this new product release.

You can download the following posters related as part of this release:

  • Windows Server 2012 R2 Private Cloud Virtualization and Storage
  • Virtual hard Disk Sharing
  • Virtual Hard Disk and Cluster Shared Volumes
  • Understanding Storage Architecture
  • Storage Spaces and Deduplication
  • Scale-Out and SMB
  • Hyper-V and Failover Clustering


I hope you definitely would enjoy it as much I do; posting it somewhere near to my desk.


Cleaning Active Directory groups for disabled user accounts | Remove Active Directory group membership for disabled user accounts | Hide disabled user accounts from Exchange Address List

For sometime I was looking for a script which can remove the group membership of all selected hundreds of disabled user accounts and make them hidden from Exchange Address List and also if needed can move them into another OU. But my search never got some fruitful results also I tried doing the same by building my own script with native PowerShell CMD-Lets for Active Directory module but didn’t work. It might be because I’m not too good with scripting.

Well recently I found one wonderful script which can help you to do the following:

  • Removing Active Directory group membership (except Doman User group as it is the primary group and you cannot delete its membership) for Disabled User Accounts provided in a  CSV file
  • Moving the user accounts into another OU (optional)
  • Hide the disable user accounts from the Exchange Address List

This script is written by Jason Medlin and you can find the script official posting over here.

All you need to download and install Quest PowerShell module for Active Directory. It’s a free tool and will allow you to make this script work.

So let’s export all the user account into CSV file and keep their “SamAccountName” name only and that’s it. You have to edit the CSV file location in this script and when you execute it will perform the above mentioned tasks against the provided user names in the CSV file.


MonitoringHost.exe CPU utilization problem cauase by OpsMgr 2012: Hyper-V Management Pack Extension for Windows Server 2012 Hyper-V

In this blog post we will talk about OpsMgr 2012: Hyper-V Management Pack Extension for Windows Server 2012 Hyper-V role. This management back came out on 22, June 2013 and was published on “Kevin Holman’s System Center Blog”.

This management pack extension were using the original Windows Server 2012 Hyper-V management pack with some extended capabilities to monitor the following properties of Windows Server 2012 Hyper-V hosts:

  • VMs Integration Services Version monitor
  • Hyper-V Replica Health Monitoring Dashboard and States
  • SMB Shares I/O latency monitor
  • Hyper-V Hypervisor Logical processor monitoring
  • Hyper-V Hypervisor Virtual processor monitoring
  • Hyper-V Dynamic Memory monitoring
  • Hyper-V Virtual Networks monitoring
  • NUMA remote pages monitoring
  • SLAT enabled processor detection
  • Hyper-V VHDs monitoring
  • Physical and Logical Disk monitoring
  • Host Available Memory monitoring
  • Stopped and Failed VMs monitoring
  • Failed Live Migrations monitoring

Although everything look fine in the start but over the time, after first deploying this I have seen that occasionally “MonitoringHost.exe” and some other core Hyper-V related processes on my Windows Server 2012 Hyper-V hosts takes 100% of CPU time sharing. This situation stays same until and unless I manually go and kill the process or as a result of this if it stays for longer period we use to see that Hyper-V hosts get unexpected reboot.

Since the similar issue was reported in the RTM release of System Center Operations Manager 2012 agent, so I didn’t think about this newly installed community driven Hyper-V 2012 management pack extensions. Microsoft also released System Center 2012 SCOM roll up 2 in which they documented and fixed this problem. And the similar also got fixed in the System Center 2012 R2 release.

Recently one of my customer reported me that they waited for System Center 2012 R2 and when the initially upgraded their SCOM 2012 server with R2 and agents on their Windows Server 2012 Hyper-V hosts. Things didn’t get change and they remain seeing “MonitoringHost.exe” alike process to stays at 100% CPU utilization on their servers.


Cause and Solution:
After some troubleshooting we found that this is Hyper-V management pack extensions which is requesting a lot of data which agent sometime fails to provide or get stuck in between which causes its process to go beyond and stay at 100% of CPU utilization. Even if you install SCOM 2012 Rollup 2 or upgrade to SCOM 2012 R2 the issue will not get fixed.

So the solution is to remove Hyper-V management pack extensions from the environment and use the default as it is not created and tested by Microsoft but by some community driven people. If you don’t like the solution then you have to dig deeper and need to find the actual performance monitor which is causing this 100% CPU utilization and might get it disable in SCOM.



Tips and Tricks: Unable to create Lync 2013 client “Automatically start Lync when I log on to Windows” registry settings in [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

By default Lync 2013 client doesn’t pop up automatically on user machines when they log off or restart their workstations. For deploying company wide policy to start Lync client automatically upon Windows start, you have to deploy a registry for enabling the Lync feature for “Automatically start Lync when I log on to Windows”.

This registry entry needs to be created in [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run], which holds all the auto-start-up program records which needs to kick off while Windows starts. Lync related automatically start-up registry entries settings are as follows:
“Lync”=”\”C:\\Program Files (x86)\\Microsoft Office\\Office15\\lync.exe\” /fromrunkey”

I recently happened to see a problem where, you are not allowed to create any registry entry in [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]. Initially I was thinking that its a permission problem, but later I could find that it is McAfee Virus Scan which is installed on the client PCs which has restricted me to create anything in this container.

You can add regedit.exe as the allowed programs in the Access Protection rules within McAfee VSE or in EPO in case your centrally managing McAfee VSE for all clients. You can alternatively also do by export McAfee VSE access protection rule registry and then import it into all users using Group Policy preferences.


Zahir Hussain Shah

Tips and Tricks: Deploying Lync 2013 client using SCCM 2012 | Lync 2013 Client Customization for SCCM 2012 Deployment Package

I happened to deploy Lync 2013 client recently to a large customer base, where I saw that Lync 2013 client deployment is not pretty straight forward when it comes to have Office 2010 installed as primary MS Office version and Lync will be the only candidate installed from 2013 family. Lync 2013 over a Windows 7 machine where Office 2010 is installed would require a system restart to make the installation complete, and when you try to install it through SCCM 2012 it fails if there is slight customization requirement missing.

Summary steps for deploying Lync 2013 via SCCM 2012:

1) Make Lync 2013 office customization package

2) Change Config.XML file located in x86\lync.ww or x64\lync.ww and change the below line as it is mentioned:
<Setting Id=”SETUP_REBOOT” Value=”never” /> 

This will ensure that SCCM 2012 deployment package will not allow Lync to restart and complete the deployment successfully.

Note: Don’t forget to place this file on the root of your installation (deployment) folder for SCCM to read it.

3) Create SCCM deployment package and keep the command line installation parameter as “setup.exe /adminfile <Lync2013OfficeCustomizationFileName>.MSP”.

Note: If I have missed any step then just follow normal application deployment steps of SCCM but remember to keep these important pieces in sequence to complete the deployment.

Now deploy the package to your SCCM collection and it should be fine.

Zahir Hussain Shah

Forcefully adding group contacts into Lync Users | Script for Bulk Updating Contact Groups to Lync Server 2013 Users by “Charles Ulrich”

Recently while finding a solution to uploading group contacts to Lync Server 2013 users forcefully (remotely), I came across  blog post “Lync Server 2013 – Bulk Updating Contact Groups” in which he explained all the steps you need to take to make this happen. Leeme talk a little bit about the script, the script asks you to configure a reference account where you add all the required groups, and then with the help of this script you download its contact locally. And lastly this script allows you to upload the same group contacts to single or bulk users.

When I tried first time the script, it didn’t work for me as script uses “UserPrincipalName”, where my test users were configured for sipaddress attribute for search able from the CSShell. To make this happen I had to change the script as follows:

Line #143:
Change from: $user_email=MultipleSelectionBox $userlist.UserPrincipalName "Choose Lync 2013 User" "One"
Change to: $user_email=MultipleSelectionBox $userlist.sipaddress.substring(4) “Choose Lync 2013 User” “One”

Charles done a great job with this script, and I believe you all would love too.

Zahir Hussain Shah

My blog in 2013 | Review

The stats helper monkeys prepared a 2013 annual report for this blog.

Here’s an excerpt:

The Louvre Museum has 8.5 million visitors per year. This blog was viewed about 110,000 times in 2013. If it were an exhibit at the Louvre Museum, it would take about 5 days for that many people to see it.

Click here to see the complete report.

My third MVP Award | Congratulations 2013 Microsoft MVP!

Yesterday I received my third consecutive 2013 MVP Award notification. It always feel honored to be included in the list of finest community experts and contributors around the world. 

I would like to thanks many people in a row my MVP Lead, Microsoft Gulf (for arranging speaking engagement and customer interactive sessions) my blog readers, people who bought my book, and last but not least my family for supporting me to extend some timeout for these community contribution activities.

Have a great year ahead. Cheers!

Zahir Hussain Shah MVP Award 2013

Dear Zahir Hussain Shah,

Congratulations! We are pleased to present you with the 2013 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Exchange Server technical communities during the past year.

Also in this email:

  • About your MVP Award Gift
  • How to claim your award benefits
  • Your MVP Identification Number
  • MVP Award Program Code of Conduct

The Microsoft MVP Award provides us the unique opportunity to celebrate and honor your significant contributions and say “Thank you for your technical leadership.”

Mike Hickman
Community Engagement


Get every new post delivered to your Inbox.

Join 312 other followers