你能得到一个包含msmq中所有消息的列表吗?

时间:2016-11-16 10:46:48

标签: powershell queue messages

我正在尝试通过脚本检查我所有msmq中的任何消息是否超过2分钟。我尝试过powershell,但我得到的最接近的是获取私有队列中有多少消息,但似乎没有任何选项来获取变量中的消息以查看它们的到达时间。这可能吗?

2 个答案:

答案 0 :(得分: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"
}
}

答案 1 :(得分:-1)

这应列出所有队列中的所有消息,并全部通过它们。

以此为基础并展开。

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