2016-11-16 2 views
-2

J'essaye de vérifier si tous les messages dans tous mes msmq ont été là plus de 2 minutes par le manuscrit. J'ai essayé PowerShell mais le plus proche que j'ai obtenu était de savoir combien de messages sont dans une file d'attente privée, mais ne semble pas être une option pour obtenir les messages dans une variable pour voir leur heure d'arrivée. Est-ce possible?Pouvez-vous obtenir une liste avec tous les messages dans un msmq?

Répondre

-1

Ceci devrait lister tous les messages dans toutes les files d'attente, en les parcourant tous.

Utilisez-le comme base et développez.

gwmi -class Win32_PerfRawData_msmq_msmqqueue -computerName $computerName | 
    ft -prop Name, MessagesInQueue 
+1

je suis arrivé à ce point en utilisant une variante de cette commande déjà, mais retourne une liste de toutes les files d'attente et mon problème est qu'un objet de file d'attente ne semble pas avoir une méthode qui retourne une liste de messages sont dans cette file d'attente. – user3027798

0

J'ai trouvé cette réponse dans un autre sujet, c'est exactement ce que je cherchais.

[String]$cName = $Env:COMPUTERNAME 
[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | out-null 
[System.Messaging.MessageQueue[]]$queues = [System.Messaging.MessageQueue]::GetPrivateQueuesByMachine($cName.ToLower()) 
Foreach ($queue in $queues) { 
$queue.MessageReadPropertyFilter.SetAll() 
try { 
    [System.Messaging.Message]$message = $queue.Peek(10) 
    Write-Host $queue.QueueName $message.ArrivedTime 
} 
catch { 
    #Write-Host "Timeout" 
} 
}