Parallel Universe - MS Tech Blog

The ramblings of a PFE

powershell - checking exchange 2010 queues using WMI

powershell - checking exchange 2010 queues using WMI

  • Comments 3
  • Likes

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
  • 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.

  • hi jeff thanks for the comments, i will re-work the script and repost taking into account the feedback to show the differences ..

  • Jeff, not everyone's a PS purists. I can also start nagging about the error handling ..

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment