Do you want to know how to get the current number of connections to IIS hosted websites? The information is stored in Windows Server Performance Counters, and you can get it using Get-Counter
cmdlet in PowerShell of course. But in post I’ll show you a different -and perhaps even faster- method using WMI/CIM and Win32_PerfRawData_W3SVC_WebService. Read on…
For compatibility with PowerShell 7 (pwsh), you’ll use the Get-CimInstance
cmdlet and not Get-WmiObject
. This is because Get-WmiObject is not compatible with PowerShell 7. Whether or not Win32_PerfRawData_W3SVC_WebService is faster than Get-Counter, it gives you better flexibility to create advanced monitoring scripts.
Win32_PerfRawData_W3SVC_WebService
The Web Service object includes counters specific to the World Wide Web Publishing Service and is a subclass of Win32_PerfRawData. You may remember Win32_PerfRawData from my Zabbix posts, where I use it to monitor various aspects of IIS websites and application pools.
- Monitor IIS application pools in Zabbix, part 1
- ASP.NET web application monitoring in Zabbix, part 2
- Getting more out your Windows Performance Counters monitoring for web applications – part 3
- Monitor .NET CLR Garbage Collected heap from your web application
You find more information about Win32_PerfRawData_W3SVC_WebService and its properties on wutils.com.
Knowing the property you want to query, CurrentConnections, it’s easy to create a WQL or WMI query:
Get-CimInstance -EA SilentlyContinue -Query "select * from Win32_PerfRawData_W3SVC_WebService" -Namespace root\cimv2
Code language: PowerShell (powershell)
This queries Win32_PerfRawData_W3SVC_WebService for all properties (counters) in all websites. If that is a bit too much for your taking, you can add filters. You either use Select-Object
to select the objects you want, or you only query the the property you want (and select them to avoid empty values):
Get-CimInstance -EA SilentlyContinue -Query "select * from Win32_PerfRawData_W3SVC_WebService" -Namespace root\cimv2 | Select-Object Name,CurrentConnections
Code language: PowerShell (powershell)
Get-CimInstance -EA SilentlyContinue -Query "select Name,CurrentConnections from Win32_PerfRawData_W3SVC_WebService" -Namespace root\cimv2 | Select-Object Name,CurrentConnections
Code language: PowerShell (powershell)
You can even filter on these results further using Sort-Object
for example:
Get-CimInstance -EA SilentlyContinue -Query "select * from Win32_PerfRawData_W3SVC_WebService" -Namespace root\cimv2 | Select Name,CurrentConnections | Sort-Object CurrentConnections -Descending
Code language: PowerShell (powershell)
Get-Counter
Oh, you want to use the Get-Counter
cmdlet to query IIS for the total amount of connections? Okay, here’s how:
Get-Counter "\Web Service(website.Name)\Current Connections"
Code language: PowerShell (powershell)
Substitute website.Name
with the name of the website you want to query the total number of connections for, or use *
for all sites ("\Web Service(*)\Current Connections"
). To get the number of active connections on your IIS server, use this:
((Get-Counter -Counter 'web service(_total)current connections' -computer $env:COMPUTERNAME) | Select-Object -Expand countersamples).Cookedvalue
Code language: PowerShell (powershell)
Conclusion getting current connections to IIS
In this post I showed you various ways of getting the number of current, active, connections to IIS using PowerShell. Either by WQL querying Win32_PerfRawData_W3SVC_WebService or using Get-Counter. Performing these actions at the right time might help you identifying the website / websites responsible for port exhaustion and can help you tune Windows Server and IIS’ TCP/IP stack.
Whether or not Win32_PerfRawData_W3SVC_WebService is faster than Get-Counter, it does give you the flexibility to create advanced PowerShell scripts for your Zabbix monitoring templates.
Show Your Support

If you want to step in to help me cover the costs for running this website, that would be awesome. Just use this link to donate a cup of coffee ☕($10 USD or €10 EUR for example). And please share the love and help others make use of this website. Thank you very much! <3 ❤️