2016-11-16 3 views
-2

Я пытаюсь проверить, были ли какие-либо сообщения во всем моем msmq более 2 минут через скрипт. Я попробовал powershell, но ближе всего я получал, сколько сообщений находится в частной очереди, но, похоже, не имеет никакой возможности получать сообщения в переменной, чтобы увидеть их время в аривале. Это возможно?Можете ли вы получить список со всеми сообщениями в msmq?

ответ

-1

Это должно отображать все сообщения во всех очередях, проходя через все их.

Используйте это как основание и разверните.

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

я добрался до этой точки, используя вариации этой команды уже, но это возвращает список всех очередей и моя проблема заключается в том, что объект очереди не кажется, есть метод, который возвращает список сообщений, находятся в этой очереди. – user3027798

0

Нашел этот ответ в другом потоке, это именно то, что я искал.

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