Я пытаюсь изучить сериализацию XML в PowerShell. Итак, я делаю простой список контактов для сериализации и десериализации. Проблема, с которой я сталкиваюсь, заключается в том, что объект Contact
действует по-разному, когда я импортирую его с помощью Import-CliXml
.Как я могу использовать Import-CliXml для десериализации общего списка пользовательских объектов класса?
Вот что я пытаюсь сейчас:
class Contact {
[string]$FirstName;
[string]$LastName;
[Int64]$PhoneNumber; }
$bob = new-object Contact
$bob.FirstName = "Bob"
$bob.LastName = "Johnson"
$bob.PhoneNumber = 1235589876
$bill = new-object Contact
$bill.FirstName = "Bill"
$bill.LastName = "Carson"
$bill.PhoneNumber = 1235589875
$ContactList = new-object System.Collections.Generic.List[Contact]
$ContactList.Add($bob)
$ContactList.Add($bill)
[xml]$data = $ContactList | convertto-xml
new-item "C:\Users\Public\Documents\Contacts.xml"
$data | export-clixml "C:\Users\Public\Documents\Contacts.xml"
[xml]$ImportedData = import-clixml "C:\Users\Public\Documents\Contacts.xml"
$ImportedList = new-object System.Collections.Generic.List[Contact]
$ImportedList = $ImportedData.Objects.Object
Импортированная List[Contact]
имеет коллекцию Contact
объектов, но я не могу показаться, чтобы получить информацию от их свойств. Например, когда я получаю пустые строки, когда я пытаюсь следующее:
$ImportedList | foreach-object { write-host $_.FirstName }
Я знаю, что объекты находятся там из-за возвращения я получаю от $ImportedList
:
$ImportedList
Type Property
---- --------
Contact {FirstName, LastName, PhoneNumber}
Contact {FirstName, LastName, PhoneNumber}
Я пытаюсь получить его вернуть ту же вещь, как $ContactList
:
$ContactList
FirstName LastName PhoneNumber
--------- -------- -----------
Bob Johnson 1235589876
Bill Carson 1235589875
Любая помощь будет принята с благодарностью.
пропускает 'ConvertTo-Xml' шаг, do '$ ContactList | Export-CliXml' вместо –