In >= Windows 8, how might I return all MSMQ Journal entries for named Queue in powershell?

546
beauXjames

As introduced in MSMQ Cmdlets (https://technet.microsoft.com/en-us/library/hh405007(v=vs.85).aspx), we now have the ability to query our queue. If I run

PS C:\Get-MsmqQueue 

Then I get a full list of all queue objects on the system. Good.

If I run

PS C:\Get-MsmqQueue -QueueType Private 

Then I get a full list of all Private queue objects on the system. Cool.

However...If I run

PS C:\Get-MsmqQueue -Name private$\mt_queuename_request_001 

I don't get anything back...even though I am using a valid name...so, in turn, running

PS C:\Get-MsmqQueue -Name private$\mt_queuename_request_001 -Journal 

Also gets me nothing...which I'd really like to be able to get this list of Journal entries.

Advice? Success stories?

1
Я ничего не знаю о MSMQ, но в примерах Get-MsmqQueue мы имеем следующее: `Get-MsmqQueue -Name Order * -QueueType Private -Journal`. Это подсказывает мне, что вы можете попробовать это: `Get-MsmqQueue -Name mt_queuename_request_001 -QueueType Private -Journal` dangph 9 лет назад 0
Единственная реальная разница здесь - это добавление параметра QueueType, и это не помогает никому, когда вы также предоставляете имя ... если только вы не предоставили имя для открытого, но, конечно, запросили закрытый тип ... что рендеринг абсолютно ничего вместо бесполезной бесполезной коллекции пикселей. beauXjames 9 лет назад 0
хорошо, это была просто идея. Я подумал, что, возможно, ему не понравилась нотация `private $`. Но, как я уже сказал, я ничего не знаю о MSMQ. Как правило, полезно взглянуть на примеры. (`help Get-MsmqQueue -detail`) Возможно, стоит попробовать подстановочные знаки в имени. dangph 9 лет назад 0
да, вы можете запустить его без "private $ \", и он действительно что-то возвращает ... просто не тот список, на который я надеялся beauXjames 9 лет назад 0

1 ответ на вопрос

1
Egis

Я вижу, что пост довольно старый, но, может быть, он кому-нибудь поможет, потому что я долго искал его, когда приходил к решению.

Чтобы получить свойства очереди, вы можете запустить без указания пути "private $ \"

PS C:\Get-MsmqQueue -Name mt_queuename_request_001 

Боюсь, что нет возможности читать сообщения в очередях с помощью командлетов PS.

Для чтения и управления сообщениями в MSMQ я использую следующее:

# Load Messaging Assembly [Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null  # Get Queue Messages $queuePath = ("SERVER01\mt_queuename_request_001") $queue = New-Object System.Messaging.MessageQueue $queuePath $queue.GetAllMessages()  # Get Journal Messages $queuePath = ("SERVER01\mt_queuename_request_001;JOURNAL") $queue = New-Object System.Messaging.MessageQueue $queuePath $queue.GetAllMessages() 

С уважением, E