2016-11-16 6 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" 
} 
} 
関連する問題