I’ve been getting into Powershell in a big way the past few months and have put together a script to display the number of queued messages on a Microsoft Exchange 2007 or Microsoft Exchange 2010 Server. Under normal conditions your mail queue should really be empty most of the time so lots of queued messages is indicative of a problem.
$GETMQFD = Get-Counter ‘\MSExchangeTransport Queues(*)\Messages Queued For Delivery’
$MQFD = $GETMQFD.CounterSamples |Select-Object CookedValue
If ($MQFD.CookedValue | Where {$_ -eq 0})
{
Write-Host $MQFD.CookedValue Messages Queued for Delivery
}
Else
{
Write-Host “No Messages Queued For Delivery”
}
If you are using a Server Monitoring package such as GFI Max Remote Management then you can insert Exit Codes (i.e. Exit 1 or Exit 0). This is placed after the output (i.e. Write-Host “No Messages Queued For Delivery”) to generate an onscreen error or success if one of the two conditions is met.