我有需要分析信息的机器。我使用 powershell 将信息收集到一个对象中,然后使用Export-Clixml myObject.xml
.
然后我尝试使用测试导入这个对象$placeholder = Import-Clixml myObject.xml
,这工作正常,因为我可以看到所有方法并访问方法中的数据。
但是,每当我尝试在需要此类对象的程序中使用此对象时,都会出现Type Mismatch
错误。
这对于序列化对象是不可能的吗?
我有需要分析信息的机器。我使用 powershell 将信息收集到一个对象中,然后使用Export-Clixml myObject.xml
.
然后我尝试使用测试导入这个对象$placeholder = Import-Clixml myObject.xml
,这工作正常,因为我可以看到所有方法并访问方法中的数据。
但是,每当我尝试在需要此类对象的程序中使用此对象时,都会出现Type Mismatch
错误。
这对于序列化对象是不可能的吗?
如果您查看您反序列化的对象的完整类型名,您会看到它们以“Deserialized”开头。例如,如果我获取一堆System.Diagnostics.Process
对象并使用 Export-Clixml 导出它们,当我使用 Import-Clixml 导入它们时,类型现在是Deserialized.System.Diagnostics.Process
对象。PowerShell 所做的是将数据保存出来,然后让您再次访问它。你没有取回活的物体。通常唯一可用的方法是ToString()
. 这类似于远程处理上的序列化。如果您想要全保真 .NET 类型序列化。我会使用 .NET 序列化程序之一,例如 BinarySerializer 或 XmlSerializer 或更新的 DataContractSerializer。