如何通过 PowerShell/以编程方式挂载 ISO?

rtf*_*rtf 30 mount iso-image powershell command-line windows-8

如何在没有 3rd 方程序的情况下在 Windows 8 中从 PowerShell 挂载和卸载 ISO 映像?

这个问题的原始修订版让我想知道是否可以在 Windows 8 中通过 PowerShell 挂载 ISO。

rtf*_*rtf 49

从命令提示符挂载 ISO(仅限 Windows 8/2012 及更高版本)

如果您在命令提示符下需要挂载 ISO,请运行以下命令:

PowerShell Mount-DiskImage

这将调用 PowerShell cmdlet。系统将提示您输入要安装的 ISO 的路径。完成后,将最后一个留空并按Enter

运行 Mount-DiskImage cmdlet

多田!?已安装:

多田! 它已安装 - “具有可移动存储的设备”

卸载 ISO

要从 PowerShell 中卸载 ISO,请运行Dismount-DiskImage并按照提示操作。如果您只知道头顶上的驱动器号,而不知道图像路径,请使用以下命令:

Get-Volume [Drive Letter] | Get-DiskImage | Dismount-DiskImage

此命令将抓取您指定的驱动器,找到磁盘映像并卸载它。

卸载 ISO 后的“具有可移动存储的设备”

挂载多个 ISO 并显示驱动器号

您还可以使用该-PassThru标志来存储传递给命令的数据。让我们挂载一些 ISO,显示它们的驱动器号,在其中一个驱动器上执行文件,然后卸载所有 ISO。

挂载 ISO

 $MountedISOs=Mount-DiskImage -PassThru D:\Downloads\Ubuntu.iso,D:\Downloads\Windows8.iso,D:\Downloads\Server2012.iso
Run Code Online (Sandbox Code Playgroud)

显示使用foreach循环安装的每个 ISO 的卷信息

 foreach($iso in $MountedISOs){Get-Volume -DiskImage $iso}     
Run Code Online (Sandbox Code Playgroud)

列出 J 驱动器

 ls J:\
Run Code Online (Sandbox Code Playgroud)

打开文件

 start wubi.exe
Run Code Online (Sandbox Code Playgroud)

foreach/Get-Volume 和 ls 的输出

要卸载 ISO,请使用以下命令:

 Dismount-DiskImage $MountedISOs.ImagePath
Run Code Online (Sandbox Code Playgroud)

测试 ISO

要构建一个简单的脚本来检查 ISO 是否已附加并且实际上是一个 ISO(与 VHD),我喜欢用来-PassThru临时存储对象,并使用该Get-DiskImage命令更新 DiskImage 对象的状态。这将更新Attached属性。该StorageType属性将根据文件扩展名告诉您文件是 ISO 还是 VHD。

使用 <code>-PassThru</code> 和 <code>Get-DiskImage</code>

StorageType一个VHD是2,其中一个ISO将返回1.这里是输出$UbuntuISO
这是 <code>$UbuntuISO</code> 的输出

这是挂载 VHD$temp后的输出:(Mount-DiskImage也可以挂载 VHD!)
挂载 VHD 后 <code>$temp</code> 的输出

请注意,尽管命令运行顺利,但Attached上面的属性是。FalseMount-DiskImage

请记住,$UbuntuISO变量也不会保持更新:
<code>$UbuntuISO</code> 变量不会保持更新


技术网:Mount-DiskImage

Technet:卸载磁盘映像

  • 该死的,PowerShell Windows 8 中的所有这些新 cmdlet 都开始发痒了。 (6认同)
  • 全部都在 Windows 8 中吗?我的意思是你不需要安装其他程序吗??? (3认同)
  • +1 *非常* 确实不错!这正是我希望在 Win8 中找到的*确切*,因此我最终可以将其添加到我的答案的末尾[此处](http://superuser.com/a/499176/138343),但是您为我省去了麻烦. 我真的需要开始锻炼我的 PS 技能。:) 编辑:是否有任何 cmdlet 来测试内部结构并报告文件是 ISO 还是 VHD 或其他完全不受支持的文件?或者也许是一种测试 **Mount-DiskImage** 返回值的方法,也许可以相应地对代码进行分支? (2认同)