System.Management.Automation.RuntimeException при преобразовании из System.Diagnostics.Eventing.Reader.EventLogRecord в XML
Я сталкиваюсь с той же проблемой, как упомянуто в https://serverfault.com/questions/743515/my-event-log-has-corrupted-dacl-write-attributes-in-4656-file-audit-events/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 просто выводит имя типа объекта)
- удаление недопустимых символов XML с помощью.replace и regex
- преобразовать обратно / сериализовать в объект System.Diagnostics.Eventing.Reader.EventLogRecord (каким-то образом?)
- преобразовать в XML (с помощью.ToXML())
Как бы я выполнил шаги 1 и 3 этого процесса?