
[Reflection.Assembly]::LoadWithPartialName("System.Messaging")
$michineName = $env:COMPUTERNAME
$queueNames = [System.Messaging.MessageQueue]::GetPrivateQueuesByMachine($michineName) |
% {".\" + $_.QueueName}
$queueNames = $queueNames |
?{ $_ -like "*my.special*"}
$queueNames |
foreach {
[System.Messaging.MessageQueue]::Delete($_);
[System.Messaging.MessageQueue]::Create($_, [bool]1) ;
}
Krótki opis co robi skrypt:
1. Ładuje referencje do biblioteki Messaging
2. Pobiera nazwę komputera
3. Pobiera listę prywatnych kolejek i zwraca ich nazwy
4. Wybiera kolejki mające w nazwie "my.special"
5. Iteruje po wszystkich znalezionych kolejkach
6. Usuwa kolejkę
7. Tworzy transakcyjną kolejkę
Próbowałem zmienić proces usuwania i dodawania tej samej kolejki na pojedynczy proces czyszczenia kolejki, ale natrafiałem na pewne ograniczenia :/ Nie miałem wystarczającej ilości czasu, aby zamienić ten skrypt. Gdybyś znal inne sposoby na czyszczenie kolejek MSMQ to napisz w komentarzu.
Brak komentarzy:
Prześlij komentarz