As described in my question Create an ISO image using PowerShell: how to save an IStream file in a file? , in PowerShell, I create an IStream as follows:
$is = (New-Object -ComObject IMAPI2FS.MsftFileSystemImage).CreateResultImage().ImageStream
This object is of type (PowerShell) System.__ComObject . And somehow, PowerShell knows this is IStream :
PS C:\> $is -is [System.Runtime.InteropServices.ComTypes.IConnectionPoint] False PS C:\> $is -is [System.Runtime.InteropServices.ComTypes.IStream] True
However, casting to this type fails:
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
How to do this conversion without using C # code?
Update: Apparently, this conversion cannot be made to work, as x0n says.
Now my goal is to pass this IStream COM object to some C # code (part of the same PowerShell script using Add-Type ), where it will become a .NET object of type System.Runtime.InteropServices.ComTypes.IStream . Is it possible? If not, what are my alternatives?
source share