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 vonPSObjects 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önnenPSObjects 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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage