2014-11-09 3 views
0

Действительно ли он предназначен для экспорта объектов в powershell с использованием Export-clixml и использования файла .xml в качестве резервной копии?Возможно ли резервное копирование объектов Powershell с помощью Export-clixml

Я собираюсь сделать массивное удаление тысяч MailContacts в моем лесу, и я хочу сделать резервную копию всех этих MailContacts, прежде чем я удалить их

Спасибо заранее, OZ

+0

Действительно в смысле архивирования списка удаленных почтовых контактов и некоторых связанных атрибутов? Конечно. Или действителен для восстановления из xml? – noam

+0

@noam действительный в смысле смысл для восстановления from.xml – Oren

ответ

1

I скажут нет, потому что, когда вы читаете объекты обратно, 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 
... 

Примечание имя Deserialized.System.Diagnostics.Process типа.

Теперь это не означает, что вы не можете использовать данные этих объектов для ручной реконструкции MailContacts, но я бы поискал более прямой маршрут. Например, не удалось ли вы создать резервную копию файла, содержащего MailContacts, - если они хранятся в файле? Или, возможно, есть API, позволяющий сохранять контакты в файл?