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

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

如何在没有第三方程序的情况下在 Windows 8 中通过 PowerShell 挂载和卸载 ISO 映像?

问题原来的修订我想知道是否可以在 Windows 8 中通过 PowerShell 安装 ISO。

答案1

从命令提示符挂载 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

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

 foreach($iso in $MountedISOs){Get-Volume -DiskImage $iso}     

列表 J 驱动器

 ls J:\

打开文件

 start wubi.exe

foreach/Get-Volume 和 ls 的输出

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

 Dismount-DiskImage $MountedISOs.ImagePath

测试 ISO

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

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

VHD 的值为StorageType2,而 ISO 将返回 1。以下是 的输出$UbuntuISO
以下是 <code>$UbuntuISO</code> 的输出

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

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

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


Technet:Mount-DiskImage

Technet:Dismount-DiskImage

答案2

通常,如果您想通过命令行执行此操作,则需要一种非交互式方法。您将需要使用开关-ImagePath来执行此操作。

因此,正确的命令是:

PowerShell Mount-DiskImage -ImagePath "C:\AbsolutePathTo\Image.iso"

请记住,如果引用绝对路径(包含空格和其他特殊字符),则需要转义引号。

要卸载 iso 映像,请记住引用它:

PowerShell "Get-Volume G | Get-DiskImage | Dismount-DiskImage"

请注意,在第一种情况下我们不必引用命令,但在第二种情况下我们必须引用,因为管道|将使命令行认为它是在命令行上下文中,而不是附加参数PowerShell(PowerShell 会自动将其连接成单个命令)。

还要确保拼写Dismount-DiskImage正确(kDismount 中的“否”)。

相关内容