4

を使用せずに、ローカル マシン上のすべてのプライベート MSMQ キューの名前を取得するにはどうすればよいSystem.Messaging.MessageQueue.GetPrivateQueuesByMachine(".")ですか? 私は PowerShell を使用しているので、COM、WMI、または .NET を使用するソリューションはどれでも受け入れられますが、後者が望ましいです。

この質問には、すべてのキュー オブジェクトを返す解決策があることに注意してください。オブジェクトは必要ありません (キューがたくさんある場合は遅すぎて少し不安定です)。名前だけが必要です。

4

2 に答える 2

5
$obj = Get-WmiObject Win32_PerfRawdata_MSMQ_MSMQQueue ##will return an Object[] array
$obj[0].name ## will return the 1st Queue Name

また、これを実行して、このオブジェクトのメソッド/プロパティをさらに見つけることができます-

$obj | Get-Member

プライベート Q のみを一覧表示するには、これを使用できます -

Get-WmiObject Win32_PerfRawdata_MSMQ_MSMQQueue |
    ?{$_.Name -match "private"} |
        %{$_.Name} 
于 2012-06-15T15:30:36.130 に答える
2

Windows Server 2012 および Win8 以降、PS には Get-MsmqQueue コマンドがあります。私のテストでは get-wmiobject メソッドよりも高速です。

Measure-Command {
  $list = Get-MsmqQueue -QueueType Private | % {$_.QueueName}
}
Measure-Command {
  $list = Get-WmiObject Win32_PerfRawdata_MSMQ_MSMQQueue | ?{$_.Name -match "private"} | %{$_.Name} 
}
于 2015-08-05T17:38:01.497 に答える