Microsoft Exchange 2007 and 2010 – Messages Queued For Delivery Powershell Script

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




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.

How to install Powershell ISE

Do you want to design, develop and test powershell scripts on your Windows Server?

If you are running Microsoft Windows Server 2008 R2 or Microsoft Windows Small Business Server 2011 then you will not be able to “right click” and select “Edit” you can however choose to run the script.

You need the Powershell Integrated Scripting Environment to be able to easily create, edit and debug your powershell scripts.

To install it just open Powershell, usually it is best to do this by “right clicking” your Powershell shortcut and clicking “Run as administrator”.  Once Powershell is open simply paste in the following text and then click “Enter” to start the install process


Import-Module ServerManager;Add-WindowsFeature PowerShell-ISE


You should now see “Powershell ISE” under Start Menu, Accessories and Windows Powershell.

Windows Kernel Power Event ID 41 Error

Windows 7 or Windows Server 2008 R2 may restart unexpectedly, you may get a brief glimpse of a BSOD (Blue Screen of Death) and then find yourself back at the Windows login prompt.  When you inspect the Windows Event Log you will find the following event logged

Log Name: System
Source: Microsoft-Windows-Kernel-Power
Event ID: 41
Level: Critical
The system has rebooted without cleanly shutting down first. This error could be caused if the system stopped responding, crashed, or lost power unexpectedly.

The additional info under the event is important because the various bug check codes can indicate different causes.

BugcheckCode          0
BugcheckParameter1    0x0
BugcheckParameter2    0x0
BugcheckParameter3    0x0
BugcheckParameter4    0x0

Having faced this error recently it eventually turned out that the problem was due to incompatible memory (not faulty memory).  The batch of machines in question were all branded but due to an error with the manufacturers memory compatability matrix had been supplied with the wrong additional memory modules.  When we reverted the machines to the standard 2GB module that was already installed they operated perfectly, we eventually arranged for the additional modules to be swapped and that was the end of the issue.

An important thing to remember is that a memory checker will not show that your memory is faulty if it just incompatible with your particular system or mainboard.

Your system or mainboard manufacturers support should be able to confirm memory compatability and advise on the correct upgrade/type for your system

HP ProLiant ML Tower and DL RackMount Server – SNMP RAID and Health Checks

My second post is going to be about SNMP checks that apply to the HP ProLaint ML Tower or DL Rack Server, you need to install/configure the Windows SNMP Service, HP Insight Management Agents and the HP ProLiant Array Configuration Utility before these OIDs will work.

Drive Array Health Status =
1 = other, 2= ok, 3 = degraded, 4 = failed

CPU Fans = . (Usually only appliacble to ML350 G5 as the ML350 G6 Variant does not have CPU Fans)
1 = other, 2= ok, 3 = degraded, 4 = failed

ECC Memory Errors Reported = .
0 = No Errors, 1 = 1 Error, etc

Power Supply Status = .
1 = other, 2= ok, 3 = degraded, 4 = failed

System Fans = .
1 = other, 2= ok, 3 = degraded, 4 = failed

System Temperature = .
1 = other, 2= ok, 3 = degraded, 4 = failed

IT – Software and Hardware Support Resources