2016-03-22 31 views
1

私はPowerShellに関する初心者ですが、私がセットアップしたメッセージキュー(MSMQ)をテストする最良の方法を調査しています。 は、これまでのところ、私は存在しているものを見るために私のすべてのキューを取得するためにPowerShellで次のコマンドを実行することができました:MSMQ投稿メッセージ

gwmi -class Win32_PerfRawData_MSMQ_MSMQQueue -computerName . | 
ft -prop Name, MessagesInQueue 

これは私が用意してMSMQキューのリストを返します。 これで、接続をテストするために名前を付けられた返されたキューの1つのみにメッセージをポストします。私のキューの名前は:私は、次を使用して試みたが、運がなかったしている

<server>\private$\<queuename> 

$myqueue = '.\Private$\portalemailqueue' 
$MyQueue.Send("<<Message>>", "test1") 

Method invocation failed because [System.String] does not contain a method named 'Send'. 
At line:3 char:1 
+ $MyQueue.Send("<<Message>>", "test1") 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (:) [], RuntimeException 
+ FullyQualifiedErrorId : MethodNotFound 

私は私の人生のためにこれを行う方法を見つけ出すことはできません。誰もこれを行うための良いリソースやコードを持っていますか?

答えて

3

エラーとして、あなたの$MyQueueオブジェクトは単なる文字列であり、何も特別なものではありません。

あなたは、メッセージキューインスタンスで動作する.NET System.Messaging名前空間を使用することができます。

Add-Type -AssemblyName System.Messaging 
$MyQueuePath = '.\Private$\portalemailqueue' 
$MyQueue = if([System.Messaging.MessageQueue]::Exists($MyQueuePath)) { 
    # Open existing queue 
    New-Object System.Messaging.MessageQueue $MyQueuePath 
} else { 
    # Or create it 
    [System.Messaging.MessageQueue]::Create($MyQueuePath) 
} 
# Now you can call $MyQueue.Send()