我正在尝试通过脚本检查我所有msmq中的任何消息是否超过2分钟。我尝试过powershell,但我得到的最接近的是获取私有队列中有多少消息,但似乎没有任何选项来获取变量中的消息以查看它们的到达时间。这可能吗?
答案 0 :(得分:0)
在另一个帖子中找到了这个答案,这正是我所寻找的。 p>
[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