2013-09-11 3 views
0

У меня есть машина, которую мне нужно проанализировать для информации. Я использую powershell для сбора информации в объект, а затем я пишу этот объект в файл, используя Export-Clixml myObject.xml.Как использовать сериализованный объект powerhsell?

Затем я попытаюсь протестировать импорт этого объекта с помощью $placeholder = Import-Clixml myObject.xml, и это отлично работает, поскольку я могу видеть все методы и получать доступ к данным в методах.

Однако, когда я пытаюсь использовать этот объект в своей программе, где требуется этот тип объекта, я получаю ошибку Type Mismatch.

Это невозможно с сериализованным объектом?

ответ

1

Если вы посмотрите на полное имя десериализованных объектов, вы увидите, что они начинаются с «Deserialzed». Например, если я беру кучу объектов System.Diagnostics.Process и экспортирую их с помощью Export-Clixml, когда я использую Import-Clixml для их импорта, типы теперь являются Deserialized.System.Diagnostics.Process объектов. Что делает PowerShell, это сохранение данных, а затем предоставление вам доступа к этому снова. Вы не возвращаетесь к живым объектам. Как правило, единственным доступным способом является ToString(). Это похоже на то, что происходит с сериализацией по удалению. Если вам нужна полноформатная сериализация .NET. Я бы использовал один из сериализаторов .NET, таких как BinarySerializer или XmlSerializer или новый DataContractSerializer.

+0

Как найти бинарный сериализатор? –

+0

См. Документы в BinaryFormatter - http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx –

Смежные вопросы