如何通过PowerShell /以编程方式安装ISO?


Answers:


46

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

StorageType一个VHD是2,其中一个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


6
该死,PowerShell Windows 8中所有这些新cmdlet都开始发痒。
sinni800

1
我们可以通过命令轻松地安装映像C:\>explorer.exe imagepath,这里不需要PS,但是要卸载则需要PS。
2012年

3
是否都在Windows 8中?我的意思是您不需要安装其他程序吗???
Searush 2012年

2
+1 非常好的哉!这正是我希望在Win8中找到的,因此我最终可以将其添加到此处的答案末尾,但是您为我省去了麻烦。我真的需要开始增强我的PS技能。:)编辑:是否有任何cmdlet可以测试内部情况并报告文件是ISO还是VHD或完全不支持的其他内容?或者也许是一种测试Mount-DiskImage的返回值的方法,也许代码可以相应地分支?
卡兰2012年

1
@Karan终于弄清楚了= D这不会测试胆量,坦率地说,我认为这太过分了。但这会让我们知道它是否已安装以及ISO vs VHD,而无需深入探讨PowerShell错误处理。
Tanner Faulkner 2012年

3

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

因此,命令为:

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

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

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

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

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

还要确保拼写Dismount-DiskImage正确(k在“拆卸”中没有)。


-Command开关有什么作用,为什么非交互式运行?
Tanner Faulkner 2012年

1
哎呀,不需要-Command,它似乎是自动执行的,是非交互式的,因为有可能是脚本在执行而不是人为操作(可以使用GUI)
ronalchn 2012年

不要忘记通过文件名进行更简单的卸载:PowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
juanitogan

对于当前目录安装:PowerShell Mount-DiskImage \"%CD%\Image.iso\"
juanitogan '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.