При размещении среды выполнения PowerShell можно каким-то образом преобразовать PSObject
обратно в исходный тип?
Например:
У меня есть командлет, который вызывает WriteObject
и отправляет коллекцию ClassXzy в конвейер. Когда я вызываю PowerShell.Invoke
со стороны хоста, я получаю набор PSObject
со свойством BaseObject
. Преобразование BaseObject
в ClassXyz
не удается.
Есть ли способ сопоставить каждое значение свойства с соответствующим исходным объектом?
Я предполагаю, что PowerShell каким-то образом делает это, поскольку вы можете передать PSObject
в командлеты, и они будут преобразованы в типы параметров. Но как?
Я провел много времени, разбираясь в сборках PS с помощью Reflector, но так и не понял, как происходит это волшебство.
Любые идеи?
РЕДАКТИРОВАТЬ: Я забыл одну очень важную деталь. PSObject
, с которым я тестирую, является удаленным объектом, поэтому тип BaseObject
называется Deserialized.ClassXyz
. Вот почему я вижу такое странное поведение.