powershell - checking exchange 2010 queues using WMI
just in case you are not allowed open remote powershell or something like that, here is a quick way to collect the information via WMI from a remote computer...
# Setting path to servers.txt file for input later on...
$inputfilepath = $env:USERPROFILE + "\Desktop"
$inputfilename = "servers.txt"
$workingfile = $inputfilepath + "\" + $inputfilename
#does the file exist?
$fileexist = test-path $workingfile
if ($? -eq $false)
{
Write-Host "$inputfilename does not exist on $infputfilepath" -ForegroundColor Red -BackgroundColor Black
Write-Host "Please Create the file with one server per line that you want checked" -ForegroundColor Red -BackgroundColor Black
exit 1
}
#read the file into a variable for later processing
$servers = Get-Content $workingfile
$WarningLevel = 10
$CriticalLevel = 20
Foreach ($s in $servers)
{
#this part tests for port 25 open which is a good sign its a hub transport server!
$port = 25
$ErrorActionPreference = “SilentlyContinue”
$socket = new-object Net.Sockets.TcpClient
$socket.Connect($s, $port)
if ($socket.Connected)
{
$connect = $true
$socket.Close()
}
else
{
$connect = $false
}
$socket = $null
if ($connect -eq $true)
{
$MessagesQueued = get-wmiobject -ComputerName $s -query "select MessagesQueuedForDelivery from Win32_PerfFormattedData_MSExchangeTransportQueues_MSExchangeTransportQueues"
$Messages = $MessagesQueued.MessagesQueuedForDelivery
if ($Messages -gt $CriticalLevel )
{
Write-Host "Messages Queues BAD" -ForegroundColor Red -BackgroundColor Black
}
elseif ($Messages -ge $WarningLevel)
{
Write-Host "Messages Queues Need to be monitored" -ForegroundColor Yellow -BackgroundColor Black
}
else
{
Write-Host "Message Queues Appear Healthy" -ForegroundColor Green -BackgroundColor Black
}
}
}
Comments
Anonymous
January 01, 2003
Jeff, not everyone's a PS purists. I can also start nagging about the error handling ..Anonymous
January 01, 2003
hi jeff thanks for the comments, i will re-work the script and repost taking into account the feedback to show the differences ..Anonymous
November 09, 2011
Instead of using Write-Host to display the warnings, you might consider using the Write-Warning cmdlet. I would also encourage you to consider writing an object to the pipeline so that you can do more. Right now, all you can do is read the results on the screen. There is no way to save the results to a file, send as a mail message, export to a CSV or anything. You might create a custom object with the computername, the count of messages in the queue, the current datetime and even your status message.