2012-08-03 11 views
8

Czy można usunąć kolejkę msmq z pliku nietoperza?Oczyść kolejkę MSMQ i zresetuj IIS z pliku nietoperza.

Zasadniczo chcę, aby plik bat lub przynajmniej coś szybkie i łatwe, tak że niedoświadczony pracownik może kliknąć i naprawić, nie znając żadnych skorupach Narzędzia Administracyjne

Czy ktoś proszę mi pomóc we właściwym kierunku?

Odpowiedz

14

Spójrz na MSMQAdm Utility

Zadania administrowanych przez programów użytkowych są następujące:

  • Przeglądając lokalne kolejki
  • odpowietrzające wiadomości
  • Usuwanie pojedynczych wiadomości
  • zatrzymywanie i uruchomienie usługi MSMQ
  • Łączenie i rozłączanie z siecią

nie zapomnij o powershell, spójrz na PowerShell Community Extensions

Aktualizacji

Otwarte PowerShell i pisać wiersz po wierszu

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

Call powershell od cmd

  1. Utwórz plik txt.
  2. Włóż wszystkie linie
  3. przedłużające modyfikacji pliku na "ps1"

Najprostszym sposobem wywołania skryptu z cmd.

powershell.exe -executionpolicy Nieograniczony C: \ purgemsmq.ps1

+0

Ok, będę spojrzeć.Ale zasadniczo chcę zrobić plik nietoperza lub co najmniej coś szybkiego i łatwego, tak aby niewyszkolony pracownik mógł klikać i naprawiać bez znajomości jakichkolwiek narzędzi powłoki lub narzędzi administratora. – Martin

+0

Msmq nie ma narzędzi wiersza poleceń. Zobacz http://stackoverflow.com/questions/9018826/msmq-command-line-in-win-7 – GSerjo

+0

dodano polecenia powershell, po prostu otwórz powershell i wstaw całą linię po linii – GSerjo

3

to działa Kod: skrypt

[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

Wraz z kodem, spróbuj również wyjaśnić o tym . – Jatin

+0

Invoke-command $ Server -scriptblock {} – IVISIONEDI

1

PowerShell, aby oczyścić wszystkie prywatne kolejki na komputerze lokalnym:

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

Jak wyjaśniono w https://stackoverflow.com/a/11793579/1235394, najprostszym sposobem na wykonanie jest:

  • zapisać skrypt do pliku purge-private-msmq-queues.ps1
  • w tym samym katalogu utworzyć plik skryptu purge-private-msmq-queues.cmd z następującej treści:

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