相关疑难解决方法(0)

使用PowerShell创建ISO映像:如何将IStream保存到文件?

我想在Windows上创建一个ISO映像,即.iso文件.这可以使用COM组件IMAPI2FS.MsftFileSystemImage,我在MSDN博客文章"在PowerShell中使用IMAPI 2编写光盘"中找到了如何使用PowerShell执行此操作的说明.

在第3步之后,这些指令说"在这一步你可以停止并将结果图像保存到本地硬盘,这将是一个纯粹的ISO图像."

我的问题:如何在PowerShell中获取$ resultStream,即检索ImageStream的COM对象,并将其内容保存到文件中?

com powershell imapi iso-image

8
推荐指数
1
解决办法
1万
查看次数

PowerShell:如何将COM对象转换为.NET互操作类型?

如我的问题中所述使用PowerShell创建ISO映像:如何将IStream保存到文件?,在PowerShell中我创建一个IStream对象如下:

$is = (New-Object -ComObject IMAPI2FS.MsftFileSystemImage).CreateResultImage().ImageStream
Run Code Online (Sandbox Code Playgroud)

此对象是(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
Run Code Online (Sandbox Code Playgroud)

但是,此类型的强制转换失败:

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
Run Code Online (Sandbox Code Playgroud)

如何在不使用C#代码的情况下进行此转换?

更新:显然这种转换无法正常工作,正如x0n的回答所说的那样.

现在,我的目标是将此IStreamCOM对象传递给某些C#代码(使用相同的PowerShell脚本的一部分Add-Type),它将成为类型的.NET对象System.Runtime.InteropServices.ComTypes.IStream.那可能吗?如果没有,我有什么替代品?

com powershell com-interop powershell-2.0 imapi

6
推荐指数
2
解决办法
2890
查看次数

标签 统计

com ×2

imapi ×2

powershell ×2

com-interop ×1

iso-image ×1

powershell-2.0 ×1