我遇到了与 https://serverfault.com/questions/743515/my-event-log-has-corrupted-dacl-write-attributes-in-4656-file-audit-events/852636#中提到的相同的问题852636事件日志中有一些无效字符,因此使用 .ToXML() 失败,但有以下例外:
System.Management.Automation.RuntimeException 无法转换值“http://schemas.microsoft.com/win/2004/08/events/event'>
省略不相关数据
<Data Name='AccessReason'>%%1538: %%1804
%%1541: %%1801 D:(A;ID;FA;;;S-1-5-21-4261485934-2742084322-1513010315-1120)
%%4416: %%1801 D:(A;ID;FA;;;S-1-5-21-4261485934-2742084322-1513010315-1120)
%%4417: %%1801 D:(A;ID;FA;;;S-1-5-21-4261485934-2742084322-1513010315-1120)
%%4418: %%1801 D:(A;ID;FA;;;S-1-5-21-4261485934-2742084322-1513010315-1120)
%%4419: %%1801 D:(A;ID;FA;;;S-1-5-21-4261485934-2742084322-1513010315-1120)
%%4420: %%1801 D:(A;ID;FA;;;S-1-5-21-4261485934-2742084322-1513010315-1120)
%%4423: %%1801 D:(A;ID;FA;;;S-1-5-21-4261485934-2742084322-1513010315-1120)
%%4424: %%1801 D:(A;ID;FA;;;S-1-5-21-4261485934-2742084322-151301031亖퍲翾</Data>
键入“System.Xml.XmlDocument”。错误:“'',十六进制值 0x04,是无效字符。第 19 行,位置 117。”
我怎样才能去掉无效字符?我认为以下可能是过程:
- 转换为字符串(ToString() 似乎不起作用,当通过 Write-Host 输出时,它只是输出对象类型的名称)
- 使用 .replace 和 regex 删除无效的 XML 字符
- 转换回/序列化为 System.Diagnostics.Eventing.Reader.EventLogRecord 对象(不知何故?)
- 转换为 XML(使用 .ToXML())
我将如何实现此过程的第 1 步和第 3 步?