Write MSMQ Messages from PowerShell

This PowerShell script sends a message to an MSMQ. I did it this particular way because NServiceBus can consume messages sent like this.


$queueName = '.\Private$\your.queue.name';
$queue = new-object System.Messaging.MessageQueue $queueName;
$utf8 = new-object System.Text.UTF8Encoding;

$tran = new-object System.Messaging.MessageQueueTransaction;

$msgContent = '<?xml version="1.0" ?>
    <Messages xmlns="your-xml-namespace">
$msgBytes = $utf8.GetBytes($msgContent);

$msgStream = new-object System.IO.MemoryStream;
$msgStream.Write($msgBytes, 0, $msgBytes.Length);

$msg = new-object System.Messaging.Message;
$msg.BodyStream = $msgStream;
$queue.Send($msg, $tran);

This entry was posted in CodeMinder, MSMQ, PowerShell, Programming. Bookmark the permalink.
  • http://www.schellack.net/jonathan/ Schellack

    I also like to set the message label, so that anyone who looks in a message queue and sees the message will know what it is without having to open it. Simply add .Label = ‘your label’; after the .BodyStream line.

  • http://www.sixgun.co.uk/ Antony Scott

    Excellent post, helped me avoid writing a console app which just dumped a simple message on the bus. Thanks.

    • Jason

      Glad to hear that, Antony – thanks for dropping me a note!