Clear-Host [Reflection.Assembly]::LoadWithPartialName("System.Messaging") function Create-Queue { param ( [Parameter(Mandatory=$true)] [string]$queueName, [switch]$isPrivate = $true, [switch]$isTransactional = $false ) $innerQueueName = $queueName if ($isPrivate) { $innerQueueName = ".\private$\"+$queueName } else { $innerQueueName = ".\"+$queueName } if (![System.Messaging.MessageQueue]::Exists($innerQueueName)) { [System.Messaging.MessageQueue]::Create($innerQueueName, $isTransactional) Write-Host "Created queue " $innerQueueName } return $innerQueueName } function Add-QueueUserPermission { param ( [Parameter(Mandatory=$true)] [string]$queuePath, [Parameter(Mandatory=$true)] [string]$user, [string]$fullControl = $false ) $q = new-object System.Messaging.MessageQueue($queuePath) if ($fullControl -eq $true) { Write-Host "FullControl granted to " $user $q.SetPermissions($User, [System.Messaging.MessageQueueAccessRights]::FullControl, [System.Messaging.AccessControlEntryType]::Allow) } else { Write-Host "Restricted access granted to " $user $q.SetPermissions($User, [System.Messaging.MessageQueueAccessRights]::DeleteMessage, [System.Messaging.AccessControlEntryType]::Set) $q.SetPermissions($User, [System.Messaging.MessageQueueAccessRights]::GenericWrite, [System.Messaging.AccessControlEntryType]::Allow) $q.SetPermissions($User, [System.Messaging.MessageQueueAccessRights]::PeekMessage, [System.Messaging.AccessControlEntryType]::Allow) $q.SetPermissions($User, [System.Messaging.MessageQueueAccessRights]::ReceiveJournalMessage, [System.Messaging.AccessControlEntryType]::Allow) } } function Delete-Queue { param ( [Parameter(Mandatory=$true)] [string]$queuePath ) [System.Messaging.MessageQueue]::Delete($queuePath) } function Delete-Queues { [System.Messaging.MessageQueue]::GetPrivateQueuesByMachine($Env:COMPUTERNAME) | ForEach-Object { Delete-Queue($_.Path) } [System.Messaging.MessageQueue]::GetPublicQueuesByMachine($Env:COMPUTERNAME) | ForEach-Object { Delete-Queue($_.Path) } } ######################################################################################################################### #examples # creates a queue that is private but not transactional #Create-Queue -queueName "My Queue" -isPrivate $true -isTransactional $false # grants restricted access to the queue #Add-QueueUserPermission -queuePath ".\private$\My Queue" -user 'domain\account' # grants full control to the queue #Add-QueueUserPermission -queuePath ".\private$\My Queue" -user 'domain\account' -fullControl
Contains notes and lessons in working technology, especially .NET, Azure, DevOps, Agile, and Team Foundation Server.
Tuesday, April 3, 2012
Creating and Modifying MSMQ’s Using Powershell
There are a few Powershell functions that I have written and use to create and delete queues in MSMQ and to modify permissions on these queues. At the end of the script there are a few examples on how to use the functions.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.