使用powershell创建MSMQ消息的克隆/复制副本

使用powershell创建MSMQ消息的克隆/复制副本,powershell,msmq,Powershell,Msmq,我正在开发一个powershell实用程序,它将在用户进程耗尽队列时添加现有消息的副本,从而在专用队列上维护最少数量的消息 这就是我正在做的 [Reflection.Assembly]::LoadWithPartialName("System.Messaging") | out-null [Reflection.Assembly]::LoadWithPartialName("System.Text") | out-null . . $enum = $queue.GetMessageEnumera

我正在开发一个powershell实用程序,它将在用户进程耗尽队列时添加现有消息的副本,从而在专用队列上维护最少数量的消息

这就是我正在做的

[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | out-null
[Reflection.Assembly]::LoadWithPartialName("System.Text") | out-null
.
.
$enum = $queue.GetMessageEnumerator2();

while($enum.MoveNext())
{
    #Strategy 1 - Re-add existing message to queue
    $message = $enum.Current;
    $queue.Send($message);

    #Strategy 2 - Add a dummy message to queue
    $messageClone = New-Object System.Messaging.Message;
    $queue.Send($messageClone);

    logInfo("Number of messages in Queue - " + $queue.GetAllMessages().Length);
}
.
.

我认为这不起作用,因为将消息添加到队列后,消息总数保持不变。你能告诉我这种方法的问题吗?

我没有以正确的方式创建重复消息。这是这个问题的答案

[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | out-null
[Reflection.Assembly]::LoadWithPartialName("System.Text") | out-null
.
.
$enum = $queue.GetMessageEnumerator2();

while($enum.MoveNext())
{
    $tran = new-object System.Messaging.MessageQueueTransaction;
    $tran.Begin();

    #$msgContent
    $message = $enum.Current;

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

    $tran.Commit();          
}
.
.