基本上我有一个PowerShell脚本,它将根据它来自哪里重新处理失败的MSMQ消息,但是我在尝试“标记”任何已使用FailedQ节点下的新子节点重新处理的消息时遇到问题价值Processed
。
这是读取原始队列的函数,我也试图在写入中抛出。当然这基本上是改变用途的代码,我试图适合我的目的。我确定我在某个地方出了问题,但我不确定在哪里,因为信息会重新处理,但没有任何内容写入。
Function ReadandWriteFailedQueueFromHeaders
{
param(
[Parameter(Mandatory=$true)]
[System.Messaging.Message] $message
)
$rawheaders = [System.Text.Encoding]::UTF8.GetString($message.Extension)
$reader = New-Object System.IO.StringReader($rawheaders)
$writer = New-Object System.IO.StringWriter($rawheaders)
$xml = [xml] $reader.ReadToEnd()
$xmlwriter = [xml] $writer.Write("Processed", $xml)
$header = $xml.ArrayOfHeaderInfo.HeaderInfo | ? Key -eq "FailedQ" | Select -ExpandProperty Value
$headernode = $xml.ArrayOfHeaderInfo.HeaderInfo | ? Key -eq "FailedQ"
return ('{2}{0}\private$\{1}' -f $header.Split('@')[1], $header.Split('@')[0], "FormatName:DIRECT=OS:" )
$node = $xmlwriter.SelectSingleNode($headernode)
$child = $node.CreateElement("Processed")
$xmlwriter.DocumentElement.AppendChild($child)
$node = $xml.SelectSingleNode("FailedQ")
}