Ich versuche XML-Serialisierung in PowerShell zu lernen. Also mache ich eine einfache Kontaktliste zum Serialisieren und Deserialisieren. Das Problem, auf das ich stoße, ist, dass das Objekt Contact
sich anders verhält, wenn ich es mit Import-CliXml
importiere. HierWie kann ich Import-CliXml verwenden, um eine generische Liste benutzerdefinierter Klassenobjekte zu deserialisieren?
ist, was ich jetzt bin versucht:
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
Die importierte List[Contact]
eine Sammlung von Contact
Objekten hat, aber ich kann nicht scheinen, um die Informationen von ihren Eigenschaften zu erhalten. Zum Beispiel, wenn ich Leerzeilen erhalten, wenn ich versuche, die folgenden:
$ImportedList | foreach-object { write-host $_.FirstName }
Ich weiß, dass die Objekte gibt es wegen der Rückkehr I von $ImportedList
erhalten:
$ImportedList
Type Property
---- --------
Contact {FirstName, LastName, PhoneNumber}
Contact {FirstName, LastName, PhoneNumber}
Ich versuche, es zu erhalten, Rückkehr die gleiche Sache wie $ContactList
:
$ContactList
FirstName LastName PhoneNumber
--------- -------- -----------
Bob Johnson 1235589876
Bill Carson 1235589875
Jede Hilfe wäre sehr dankbar.
überspringen 'ConvertTo-Xml' Schritt, Do '$ ContactList | Export-CliXml' statt –