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