Purge MSMQ queue and reset IIS from a bat file

我们两清 提交于 2019-12-30 04:33:10

问题


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

  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




回答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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!