Powershell 写入已处理的MSMQ消息
基本上,我有一个PowerShell脚本,它将根据失败的MSMQ消息的来源重新处理该消息,但我在尝试使用值为Powershell 写入已处理的MSMQ消息,powershell,msmq,Powershell,Msmq,基本上,我有一个PowerShell脚本,它将根据失败的MSMQ消息的来源重新处理该消息,但我在尝试使用值为Processed的FailedQ节点下的新子节点“标记”任何已重新处理的消息时遇到了问题 这是一个读取原始队列的函数,我也试图在编写过程中使用它。当然,这基本上是重新调整的代码,我正试图适应我的目的。我肯定我在某个地方出了问题,但我不确定哪里出了问题,因为消息会重新处理,但从未写入任何内容 Function ReadandWriteFailedQueueFromHeaders {
Processed
的FailedQ节点下的新子节点“标记”任何已重新处理的消息时遇到了问题
这是一个读取原始队列的函数,我也试图在编写过程中使用它。当然,这基本上是重新调整的代码,我正试图适应我的目的。我肯定我在某个地方出了问题,但我不确定哪里出了问题,因为消息会重新处理,但从未写入任何内容
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")
}
您正在尝试编辑队列中的现有邮件吗?我以为消息是不可变的。@JohnBreakwell我正在试图编辑现有消息。我通过第三方工具(如Queue Explorer)成功地做到了这一点,我还使用Powershell覆盖了消息正文,但我无法针对特定的属性或值进行添加或更改。