Creating & Passing Enums in Powershell

To create an enumeration in powershell:

$msgTypeEnum = " 
namespace MessageTypes 
{ 
	public enum MessageType 
	{ 
		NEW_JOB = 4, 
		FAILED_JOB = 5, 
		JOB_REMOVED = 6, 
		JOB_SCHED_CHANGE = 7, 
		SERV_NOT_REACHABLE = 8, 
		CLUST_FAILOVER = 9, 
		LOW_DRIVE_SPACE = 10,
		LONG_RUNNING_JOB = 11
	} 
} 
" 
Add-Type -TypeDefinition $msgTypeEnum -Language CSharpVersion3

To pass said enumeration to a function (notice the parentheses around the enumeration value):

SendMessage $server.ServerName ([MessageTypes.MessageType]::LONG_RUNNING_JOB) "Long Running Job Alert" $msg

And, in the function (if you’re inserting the value into sql server) you’ll need to convert it to an int:

function SendMessage([string]$ServerName, [MessageTypes.MessageType]$MessageTypeID, [string]$Subject, [string]$Message)
{
	#Write-Host "EXEC dbo.usp_AddMessage @ServerName='$ServerName', @MessageTypeID=$MessageTypeID, @Subject='$Subject', @Message='$Message'"
	$nMsgType = [int]$MessageTypeID
	SaveData "EXEC dbo.usp_AddMessage @ServerName='$ServerName', @MessageTypeID=$nMsgType, @Subject='$Subject', @Message='$Message'"
}