Update May, 9 2016:
Please read the new post with the new version of the script here
If you want to know how many unique users per protocol are currently connected to your Exchange server you can pull it from performance counters:
MSExchange RpcClientAccess\User Count
Shows the number of users connected to the service
MSExchange RpcClientAccess\Connection Count
Shows the total number of client connections maintained
RPC/HTTP Proxy\Current Number of Unique Users
Shows the number of unique users currently connected to a back-end server via RPC/HTTP
MSExchange OWA\Current Unique Users
Shows the number of unique users currently logged on to Outlook Web App. This value monitors the number of unique active user sessions, so that users are only removed from this counter after they log off or their session times out
MSExchange ActiveSync\Current Requests
Shows the number of HTTP requests waiting to be assigned to a thread
W3SVC_W3WP(*msexchangeservicesapppool)\Active Requests
Shows the number of active EWS requests
Web Service(_Total)\Current Connections
Shows the number of current total connections to the IIS
Web Service(_Total)\Maximum Connections
Shows the max number of total connections to the IIS
Netlogon(_Total)\Semaphore Timeouts
Shows the number of Semaphore Timeouts since the last start of the Netlogon service
Most of those counters are described here. Why should you also have an eye on the Netlogon counter? If you have a larger environment and/or multiple forests you will agree that this is a good idea after you read this. In short: the counter should be always zero. If not you might have a bottleneck and consider to tweak MaxConcurrentAPI.
Looking at the number of counters it might be possible to collect on one or two servers, but still not optimal. Especially if you have to deal with a larger number of server. Maybe you also want to have a list per server or a summary.
Therefore I wrote a script to collect the performance counters from all Exchange server within a given AD site. The script looks for all Exchange 2010 server with CAS role or all Exchange 2013 server with MB role installed. In Exchange 2013 you have to look at the MB server due to the change in the architecture. The script takes advantage of the function I described in a post before. You need only PS and the permission (at least must be part of the local group “Performance Monitor Users” on the servers) in order to run it successful:
This gives you also a good overview if your load balancer is working as expected. You can download the script here:
Thanks, very useful to have.
LikeLike
Pingback: How many users are connected to Exchange per protocol? | Keep it tidy
Thanks for sharing this awesome script mate….
LikeLike
Pingback: Get-ActiveExchangeUsers 2.0 | The clueless guy
Question.. The account im running this with is a domain admin, and also local admin, member of performance monitor users. It returns the server names, but all zeros.. thoughts?
LikeLike
Have tha same problem. All couters have zero result.
LikeLike
Hi, have you checked the latest version? Please check this post:https://ingogegenwarth.wordpress.com/2016/05/09/get-activeexchangeusers-2-0/
Besides this: What language have the installed systems?
Ciao,
Ingo
LikeLike
Same Problem, I have in spanish….
LikeLike
Hi, as the performance counters are localized this part of the script works only with English installations. I’m going to publish soon a new version, which is using IIS and .NET performance counters and some new functions.
Stay tuned.
Ciao,
Ingo
LikeLike
I have uderstood why i get zero result. I have russian version of exchange and it has counters with russian name. 😦
LikeLike
Pingback: Exchange Connexion - Connexion