2012-08-03 5 views

Antwort

14

Werfen Sie einen Blick auf MSMQAdm Utility

Aufgaben durch die Hilfsprogramme verwaltet gehören die folgenden:

  • Durchsuchen von lokalen Warteschlangen
  • Bereinigen Nachrichten
  • Löschen einzelner Nachrichten
  • Stoppen und Starten des MSMQ-Dienstes
  • anschließen und vom Netz zu trennen

Sie nicht über Powershell vergessen, werfen Sie einen Blick auf PowerShell Community Extensions

aktualisieren

Öffnen von Powershell und Schreib Zeile für Zeile

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

Rufen Sie Powershell von cmd

  1. Erstellen Sie eine TXT-Datei.
  2. Legen Sie alle Linien
  3. ändern Dateierweiterung auf "ps1"

Der einfachste Weg, Call-Skript von cmd.

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

+0

Okay, ich werde einen Blick.Aber im Wesentlichen möchte ich eine Fledermaus-Datei oder zumindest etwas schnell und einfach machen, so dass ein untrainierter Mitarbeiter klicken und reparieren kann, ohne irgendwelche Shell- oder Admin-Tools zu kennen. – Martin

+0

Msmq haben keine Befehlszeilen-Dienstprogramme. Siehe http://StackOverflow.com/Questions/9018826/msmq-command-line-in-win-7 – GSerjo

+0

hinzugefügt Powershell-Befehle, öffnen Sie einfach Powershell und fügen Sie alle Zeile für Zeile – GSerjo

3

Dieser Code funktioniert:

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

} 
+0

zusammen mit Code bitte versuchen, darüber auch zu erklären . – Jatin

+0

Invoke-Befehl $ Server-Skriptblock {} – IVISIONEDI

1

Powershell-Skript alle privaten Warteschlangen auf dem lokalen Rechner zu reinigen:

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

Wie in https://stackoverflow.com/a/11793579/1235394 erklärt, ist der einfachste Weg, es auszuführen:

  • speichern Skript purge-private-msmq-queues.ps1
  • im selben Ordner erstellen Skriptdatei purge-private-msmq-queues.cmd mit folgendem Inhalt in Datei:

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