Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Purge MSMQ queue and reset IIS from a bat file

Is it possible to purge a msmq queue from a bat file?

Essentially I want to make a bat file or at least something quick and easy so that an untrained employee can click and fix without knowing any shell or admin tools

Could someone please help me in the right direction?

like image 707
Martin at Mennt Avatar asked Aug 03 '12 09:08

Martin at Mennt


2 Answers

Take a look on MSMQAdm Utility

Tasks administered through the utility programs include the following:

  • Browsing local queues
  • Purging messages
  • Deleting individual messages
  • Stopping and starting MSMQ service
  • Connecting and disconnecting from the network

Don't forget about powershell, take a look on PowerShell Community Extensions

Update

Open powershell and write line by line

[Reflection.Assembly]::LoadWithPartialName("System.Messaging")
$queueName = '.\Private$\testQueue'
$queue = new-object -TypeName System.Messaging.MessageQueue -ArgumentList $queueName
$queue.Purge()

Call powershell from cmd

  1. Create txt file.
  2. Insert all lines
  3. Change file extension on "ps1"

The easiest way call script from cmd.

powershell.exe -executionpolicy Unrestricted C:\purgemsmq.ps1

like image 190
GSerjo Avatar answered Sep 17 '22 00:09

GSerjo


THis Code Works:

[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null 
$Name=(get-wmiobject win32_computersystem).name
$QName=(
"FormatName:Direct=OS:$name\System$;DEADXACT",
"FormatName:Direct=OS:$name\System$;DEADLETTER"
)

foreach ($Q in $Qname){
$MessageQueue = New-Object System.Messaging.MessageQueue($Q)
$MSGCount=$($MessageQueue.GetMessageEnumerator2()).count

IF($MSGCount){
$MessageQueue.Purge()
Write-Host "$Q has been purged of $MSGCount messages." -ForegroundColor green
}
Else{
Write-Host "$Q is clean"}

} 
like image 41
IVISIONEDI Avatar answered Sep 17 '22 00:09

IVISIONEDI