PowerShell: как преобразовать COM объект в .NET interop тип?

Как описано в моем вопросе Создание ISO образа с помощью PowerShell: как сохранить IStream в файл?, в PowerShell я создаю IStream объект следующим образом:

$is = (New-Object -ComObject IMAPI2FS.MsftFileSystemImage).CreateResultImage().ImageStream

Этот объект имеет (PowerShell) тип System.__ComObject. И каким-то образом PowerShell знает, что это IStream:

PS C:\> $is -is [System.Runtime.InteropServices.ComTypes.IConnectionPoint]
False
PS C:\> $is -is [System.Runtime.InteropServices.ComTypes.IStream]
True

Однако приведение к этому типу не работает:

PS C:\> [System.Runtime.InteropServices.ComTypes.IStream] $is
Cannot convert the "System.__ComObject" value of type "System.__ComObject" to type "System.Runtime.InteropServices.ComT
ypes.IStream".
At line:1 char:54
+ [System.Runtime.InteropServices.ComTypes.IStream] $is <<<<
    + CategoryInfo          : NotSpecified: (:) [], RuntimeException
    + FullyQualifiedErrorId : RuntimeException

Как мне заставить это преобразование работать, не используя код C#?

Обновление: По-видимому, это преобразование невозможно заставить работать, как сказано в ответе x0n.

Теперь моя цель - передать этот IStream COM объект в некоторый C# код (часть того же PowerShell скрипта с использованием Add-Type), где он станет .NET объектом типа System.Runtime.InteropServices.ComTypes.IStream. Возможно ли это? Если нет, то какие у меня есть альтернативы?

6
задан Community 23 May 2017 в 12:22
поделиться