8

msmq キューをバット ファイルからパージすることは可能ですか?

基本的に、訓練を受けていない従業員がシェルや管理ツールを知らなくてもクリックして修正できるように、バットファイルまたは少なくとも何かをすばやく簡単に作成したいと考えています

誰かが正しい方向に私を助けてくれますか?

4

3 に答える 3

13

MSMQAdm ユーティリティを見てみましょう

ユーティリティ プログラムによって管理されるタスクには、次のものが含まれます。

  • ローカル キューの参照
  • メッセージのパージ
  • 個々のメッセージの削除
  • MSMQ サービスの停止と開始
  • ネットワークへの接続と切断

PowerShellについて忘れないでください。PowerShell Community Extensionsをご覧ください。

アップデート

PowerShell を開き、1 行ずつ書き込みます

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

cmd から powershell を呼び出す

  1. txt ファイルを作成します。
  2. すべての行を挿入
  3. 「ps1」のファイル拡張子を変更

cmd からスクリプトを呼び出す最も簡単な方法。

powershell.exe -executionpolicy 無制限 C:\purgemsmq.ps1

于 2012-08-03T10:06:27.013 に答える
4

このコードは動作します:

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

} 
于 2014-03-17T19:32:33.187 に答える
1

ローカル マシン上のすべてのプライベート キューを消去する 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
    
于 2014-10-14T12:42:14.123 に答える