问题
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?
回答1:
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
- Create txt file.
- Insert all lines
- Change file extension on "ps1"
The easiest way call script from cmd.
powershell.exe -executionpolicy Unrestricted C:\purgemsmq.ps1
回答2:
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"}
}
回答3:
PowerShell script to purge all private queues on local machine:
[Reflection.Assembly]::LoadWithPartialName("System.Messaging")
$MachineName=(get-wmiobject win32_computersystem).name
[System.Messaging.MessageQueue]::GetPrivateQueuesByMachine("$MachineName") | % { $_.Purge(); }
As explained in https://stackoverflow.com/a/11793579/1235394, easiest way to execute it is:
- save script to file
purge-private-msmq-queues.ps1
in the same folder create script file
purge-private-msmq-queues.cmd
with following content:powershell -executionpolicy Unrestricted .\purge-private-msmq-queues.ps1
来源:https://stackoverflow.com/questions/11793441/purge-msmq-queue-and-reset-iis-from-a-bat-file