Benutzerdefinierter PowerShell-Host und Konvertieren von PSObject zurück in den Basistyp
Beim Hosten der PowerShell-Laufzeit ist es möglich, aPSObject
wieder in seinen ursprünglichen Typ wie?
Zum Beispiel:
Ich habe ein Cmdlet, das aufruftWriteObject
und schiebt eine Sammlung von ClassXzy in die Pipeline. Wenn ich anrufePowerShell.Invoke
Vom Hostende der Dinge hole ich eine Sammlung vonPSObject
s mit aBaseObject
Eigentum. CastingBaseObject
zuClassXyz
scheitert.
Gibt es eine Möglichkeit, jeden Eigenschaftswert seinem entsprechenden ursprünglichen Objekt zuzuordnen?
Ich gehe davon aus, dass PowerShell dies so macht, wie Sie es könnenPSObject
s in Cmdlets und sie werden in die Parametertypen übersetzt. Aber wie?
Ich habe viel Zeit damit verbracht, mit Reflector in die PS-Baugruppen hineinzureißen, aber ich habe nicht wirklich verstanden, wie diese Magie abläuft.
Irgendwelche Ideen?
EDIT: Ich habe ein sehr wichtiges Detail vergessen. DasPSObject
dass ich dagegen teste ist ein fernes objekt also dasBaseObject
Typ wird benanntDeserialized.ClassXyz
. Deshalb sehe ich so seltsames Verhalten.