I needed to be able to purge all Private Queues using PowerShell. I also needed to have this work on Powershell 3.0. here is the snippet I used to complete this task.
1 2 3 4 5 6 7 8 9 10 |
[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null $queues = [System.Messaging.MessageQueue]::GetPrivateQueuesByMachine(".")| % { $_.QueueName } foreach ($q in $queues) { $queuename = ".\" + $q [Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null $queue = New-Object -TypeName "System.Messaging.MessageQueue" $queue.Path = $queuename $queue.Purge() } |
with Powershell 4.0 you can use Get-MsmQueue
1 2 3 4 5 6 7 8 9 |
$queues = Get-MsmqQueue –QueueType Private | select QueueName foreach ($q in $queues) { $queuename = ".\" + $q.QueueName [Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null $queue = New-Object -TypeName "System.Messaging.MessageQueue" $queue.Path = $queuename $queue.Purge() } |