Powershell 如何获取使用Mount DiskImage安装的ISO I的驱动器号

Powershell 如何获取使用Mount DiskImage安装的ISO I的驱动器号,powershell,Powershell,我通过命令安装了ISO I。但是,我不知道如何获取装入的磁盘映像的驱动器号。我尝试$mountResult=mountDiskImage D:\ISOs\clonezilla-live-1.2.12-10-i486.iso-PassThru。返回的信息都不是驱动器号,如下所示: PS C:\Windows\system32> $mountResult | fl * Attached : False BlockSize : 0 Devic

我通过命令安装了ISO I。但是,我不知道如何获取装入的磁盘映像的驱动器号。我尝试
$mountResult=mountDiskImage D:\ISOs\clonezilla-live-1.2.12-10-i486.iso-PassThru
。返回的信息都不是驱动器号,如下所示:

PS C:\Windows\system32> $mountResult | fl *


Attached              : False
BlockSize             : 0
DevicePath            : 
FileSize              : 110100480
ImagePath             : D:\ISOs\clonezilla-live-1.2.12-10-i486.iso
LogicalSectorSize     : 2048
Number                : 
Size                  : 110100480
StorageType           : 1
PSComputerName        : 
CimClass              : ROOT/Microsoft/Windows/Storage:MSFT_DiskImage
CimInstanceProperties : {Attached, BlockSize, DevicePath, FileSize...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

PS C:\Windows\system32> $mountResult | select -ExpandProperty CimSystemProperties | fl *


Namespace  : ROOT/Microsoft/Windows/Storage
ServerName : ECHO-BASE
ClassName  : MSFT_DiskImage
Path       : 
在之后调用
D:\ISOs\clonezilla-live-1.2.12-10-i486.iso
也不会返回驱动器号

如何获取驱动器号?

试试以下方法:

$mountResult = Mount-DiskImage D:\ISOs\clonezilla-live-1.2.12-10-i486.iso -PassThru
$mountResult | Get-Volume
这将返回ISO分配给哪个驱动器号以及其他信息——从那里只需解析输出

编辑: 这将只返回驱动器号: $driveLetter = ($mountResult | Get-Volume).DriveLetter $driveLetter=($mountResult |获取音量)。driveLetter

我发现这是可行的

$beforeMount = (Get-Volume).DriveLetter

$mountResult = Mount-DiskImage $imagePath

$setuppath = (compare $beforeMount (Get-Volume).DriveLetter -PassThru) + ":\"

仅供参考,我再次装载同一个映像时遇到问题,所以我做了一个小改动,检查映像是否已装载(如果未装载),并给出卷数

$ImagePath= " " ## Path of ISO image to be mounted 
$ISODrive = (Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter
IF (!$ISODrive) {
Mount-DiskImage -ImagePath $ImagePath -StorageType ISO
}
$ISODrive = (Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter
Write-Host ("ISO Drive is " + $ISODrive)

我不完全确定它是否属于这里,但考虑到 问题和答案我会说是的

斜体:从命令提示中复制

假设 当我们谈到挂载时,我们通常谈论挂载(虚拟)磁盘,其中我们有DISKPART.EXE,或安装文件,如.WIM和.SWM,其中我们有DISM.EXE(IMAGEX.EXE),或第三方软件,如“NTLite”,或它涉及CD和DVD映像,如.ISO。据我所知,除非使用第三方软件,否则.ISO文件总是以只读方式装入。因此,.ISO文件是最不灵活的文件,因此我写这篇文章是基于这样的假设,即当时提出的问题是为一个或多个复制命令、查找命令或读取命令提供到源文件的正确完整路径,每个命令都取决于到源文件的定义良好的路径,不一定是安装映像的路径

一个可能的解决办法#
c:\windows\system32>powershell.exe安装diskimage-imagepath
“d:\blah\vlah.iso”-确认-通过
附:真实
块大小:0
Devicepath:\\.\CDROM0这对我很有用:

$beforeMount = (Get-Volume).DriveLetter
$imagePath = 'C:\dsc\en_windows_server_2016_x64_dvd_9718492.iso'
$mountResult = Mount-DiskImage $imagePath
$afterMount = (Get-Volume).DriveLetter
$setuppath = "$(($afterMount -join '').replace(($beforeMount -join ''), '')):\"

嗯。。为什么这么复杂

Mount-DiskImage D:\cd.iso -PassThru | Get-Volume

@ParrotMac您知道分配特定驱动器号的方法吗?@Fnord也许这会有所帮助?挂载,然后使用结果:重要的一点是“-PassThru”参数。昨天刚刚更新了Windows 10,我想知道行为是否发生了变化。这对我来说毫无回报。ISO已经挂载,我可以在资源管理器中查看和访问它,但是
$mountsult | Get Volume
什么都不做。这里也一样。我的
$mountResult
是一个,
Get Volume
似乎不适用于此类。我对安装的VHDX的
设备ID
感兴趣。有人能帮忙吗?
Mount-DiskImage D:\cd.iso -PassThru | Get-Volume