Object 是否可以使用Export-clixml备份Powershell对象

Object 是否可以使用Export-clixml备份Powershell对象,object,powershell,backup,Object,Powershell,Backup,使用export-clixml在powershell中导出对象并将.xml文件用作备份是否有效 我将在我的林中大量删除数千个MailContacts,我想在删除之前备份所有这些MailContacts 提前感谢,, O.Z我会说不,因为当您读回这些对象时,PowerShell不会重新创建原始的MailContact对象。它创建一个特殊类型的对象,仅表示原始对象的公共数据字段。如果要执行此操作: Start-Process notepad Get-Process notepad | Export-

使用export-clixml在powershell中导出对象并将.xml文件用作备份是否有效

我将在我的林中大量删除数千个MailContacts,我想在删除之前备份所有这些MailContacts

提前感谢,,
O.Z

我会说不,因为当您读回这些对象时,PowerShell不会重新创建原始的MailContact对象。它创建一个特殊类型的对象,仅表示原始对象的公共数据字段。如果要执行此操作:

Start-Process notepad
Get-Process notepad | Export-Clixml notepad.clixml
Stop-Process -name notepad
然后像这样导入clixml文件并将其转储到屏幕:

PS> $n = Import-Clixml .\notepad.clixml
PS> $n

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
     78       7     1280       5916    96     0.06  32752 notepad
看起来有一个记事本进程正在运行,但导入CliXml尚未重新创建记事本进程。您会注意到反序列化对象没有任何进程方法,如Kill()或WaitForExit()。这是因为导入的对象只包含原始对象数据的快照。没有可行的方法使常规方法在这样的对象上工作。通过Get Member运行导入的对象可以看到这一点:

PS> $n | Get-Member    

   TypeName: Deserialized.System.Diagnostics.Process

Name                       MemberType   Definition
----                       ----------   ----------
GetType                    Method       type GetType()
ToString                   Method       string ToString(), string ToString(string format, System.IFormatProvider for...
Company                    NoteProperty System.String Company=Microsoft Corporation
CPU                        NoteProperty System.Double CPU=0.0625
...
注意类型名
反序列化.System.Diagnostics.Process


这并不是说您不能使用这些对象的数据来手动重建MailContacts,但我会寻找更直接的路径。例如,你不能备份邮件联系人所在的文件吗?假设它们存储在一个文件中?或者可能存在允许将联系人保存到文件的API?

在存档已删除邮件联系人列表和一些相关属性的意义上是否有效?当然还是从xml还原有效?@noam在某种意义上是从.xml还原有效的