Exchange Queue Length Check

Table of Contents

Heres a script to check the queue length in exchange.
Just modify the $Threshold from 10 to whatever you desire.

$snapinversion = 0;
 foreach ( $snap in get-pssnapin -registered)
 {
     if ( $snap.Name -eq 'Microsoft.Exchange.Management.Powershell.Admin' )
     {
         $snapinversion = 2007;
         Add-PSSnapin Microsoft.Exchange.Management.Powershell.Admin -ErrorAction SilentlyContinue
  
     }
     if ( $snap.Name -eq 'Microsoft.Exchange.Management.Powershell.Support' )
     {
         $snapinversion = 2010;
         Add-PSSnapin Microsoft.Exchange.Management.Powershell.Setup -ErrorAction SilentlyContinue
         Add-PSSnapin Microsoft.Exchange.Management.Powershell.Support -ErrorAction SilentlyContinue
         Add-PSSnapin Microsoft.Exchange.Management.Powershell.E2010 -ErrorAction SilentlyContinue
     }
 }
  
 if($snapinversion -eq 0)
 {
     Write-Host "Exchange Powershell Snapin missing";
     Exit 1003;
 }
 $Threshold = 10
 $MessageCount = Get-ExchangeServer | Where { $_.isHubTransportServer -eq $true } | get-queue |  foreach -begin {$total=0} -process {$total+=$_.messageCount} -end {$total}
 if ($MessageCount -gt $Threshold)
 {
 Write-Host "Warning: $MessageCount Emails in Queue.";
 Exit 1010
 } Else {
 Write-Host "$MessageCount/$Threshold Emails in Queue.";
 Exit 0
 }