Я пытаюсь проверить, были ли какие-либо сообщения во всем моем msmq более 2 минут через скрипт. Я попробовал powershell, но ближе всего я получал, сколько сообщений находится в частной очереди, но, похоже, не имеет никакой возможности получать сообщения в переменной, чтобы увидеть их время в аривале. Это возможно?Можете ли вы получить список со всеми сообщениями в msmq?
-2
A
ответ
-1
Это должно отображать все сообщения во всех очередях, проходя через все их.
Используйте это как основание и разверните.
gwmi -class Win32_PerfRawData_msmq_msmqqueue -computerName $computerName |
ft -prop Name, MessagesInQueue
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"
}
}
я добрался до этой точки, используя вариации этой команды уже, но это возвращает список всех очередей и моя проблема заключается в том, что объект очереди не кажется, есть метод, который возвращает список сообщений, находятся в этой очереди. – user3027798