Очистка очереди MSMQ и сброс IIS из файла bat

можно ли очистить очередь msmq от файла bat?

по сути, я хочу сделать файл bat или, по крайней мере, что-то быстрое и легкое, чтобы неподготовленный сотрудник мог щелкнуть и исправить, не зная никаких инструментов оболочки или администратора

может кто-то пожалуйста, помогите мне в правильном направлении?

3 ответов


взгляните на Утилита MSMQAdm

задачи, администрируемые через служебные программы, включают следующее:

  • просмотр локальных очередей
  • удалить сообщения
  • удаление отдельных сообщений
  • остановка и запуск службы MSMQ
  • подключение и отключение от сети

Не забывайте о powershell, посмотрите на в PowerShell Расширения Сообщества

обновление

откройте powershell и напишите строку за строкой

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

вызов powershell из cmd

  1. создать txt-файл.
  2. вставить все строки
  3. изменить расширение файла на "ps1"

самый простой способ вызова скрипта из cmd.

powershell.exe-executionpolicy неограниченный C:\purgemsmq.ps1


Этот Код Работает:

[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"}

} 

сценарий PowerShell для очистки всех частных очередей на локальном компьютере:

[Reflection.Assembly]::LoadWithPartialName("System.Messaging")
$MachineName=(get-wmiobject win32_computersystem).name
[System.Messaging.MessageQueue]::GetPrivateQueuesByMachine("$MachineName") | % { $_.Purge(); }

как объяснено в https://stackoverflow.com/a/11793579/1235394, самый простой способ выполнить это:

  • сохранить скрипт в файл purge-private-msmq-queues.ps1
  • в той же папке создать файл скрипта purge-private-msmq-queues.cmd следующего содержания:

    powershell -executionpolicy Unrestricted .\purge-private-msmq-queues.ps1