如何有效地检索所有私有MSMQ队列的名称?

Dam*_*ell 4 .net com powershell wmi msmq

如何在不使用?的情况下检索本地计算机上所有私有MSMQ队列的名称System.Messaging.MessageQueue.GetPrivateQueuesByMachine(".")?我正在使用PowerShell,因此任何使用COM,WMI或.NET的解决方案都是可以接受的,尽管后者更可取.

请注意,此问题有一个返回所有队列对象的解决方案.我不想要这些对象(当有很多队列时它太慢而且有点松散),我只想要他们的名字.

Ang*_*wal 5

$obj = Get-WmiObject Win32_PerfRawdata_MSMQ_MSMQQueue ##will return an Object[] array
$obj[0].name ## will return the 1st Queue Name
Run Code Online (Sandbox Code Playgroud)

此外,您可以这样做以找到此对象上的更多方法/属性 -

$obj | Get-Member
Run Code Online (Sandbox Code Playgroud)

要仅列出私人Q,您可以使用此 -

Get-WmiObject Win32_PerfRawdata_MSMQ_MSMQQueue |
    ?{$_.Name -match "private"} |
        %{$_.Name} 
Run Code Online (Sandbox Code Playgroud)