sourcetip

Mount-DiskImage와 함께 마운트된 ISOI의 드라이브 문자를 가져오려면 어떻게 해야 합니까?

fileupload 2023. 10. 30. 21:12
반응형

Mount-DiskImage와 함께 마운트된 ISOI의 드라이브 문자를 가져오려면 어떻게 해야 합니까?

Mount-DiskImage 명령을 통해 ISO I 마운트를 수행합니다.하지만 마운트된 디스크 이미지의 드라이브 문자를 어떻게 받아야 하는지 모르겠습니다.나는 노력한다$mountResult = Mount-DiskImage 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       : 

Get-Disk 이미지 호출 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).드라이브 레터

저는 이것이 효과가 있다는 것을 알았습니다.

$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)

흠..왜 이렇게 복잡해요?

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

저는 그것이 여기에 속하는지 완전히 확신할 수는 없지만, 질문과 대답을 고려하면 그렇다고 할 수 있습니다.

기울임꼴: COMMAND PROCOM에서 복사.

가정

마운트에 대해 이야기할 때는 대개 디스크 파트(DISKPART)가 있는 마운트(가상) 디스크에 대해 이야기합니다.EXE 또는 등의 설치 파일.WIM이랑.우리가 DISM을 가지고 있는 SWM.EXE(IMAGEX).EXE) 또는 'NTLite'와 같은 타사 소프트웨어, 또는 CD 및 DVD 이미지와 관련된 것입니다.ISO. 제가 알기로는.ISO 파일은 타사 소프트웨어를 사용하지 않는 한 항상 읽기 전용으로 마운트됩니다.그래서.ISO 파일은 가장 융통성이 없는 파일이기 때문에 소스 파일에 대한 명확한 경로에 따라 하나 이상의 복사 명령, 찾기 명령 또는 읽기 명령에 대해 소스 파일에 대한 정확하고 완전한 경로를 제공하기 위해 당시 질문을 받았다는 가정에서 작성했습니다.반드시 장착된 이미지로 가는 경로는 아닙니다.

하나의 가능한 해결책#

c:\windows\system32>powershell.exe mount-diskimage -imagepath
"d:\blah\vlah.iso" -confirm -passthru

Attached           : True
Blocksize          : 0
Devicepath         : \\.\CDROM0 <<== Object of interest, since COPY.EXE
Filesize           : 4586569728           won't recurse and XCOPY.EXE
Imagepath          : "d:\blah\vlah.iso"   won't accept it as a valid 
Logicalsectorsize  : 2048                 path, however ROBOCOPY.EXE
Number             : 0                 will accept it and then it does 
Size               : 4586569728        do what I demand of it, copy the  
Storagetype        : 1                 contents of the  mounted .ISO
Pscomputername     :

xcopy \\.\CDROM0\*.* C:\new /h /i /c /k /e /r /y /f /b
Invalid drive specification
0 File(s) copied

Robocopy \\.\CDROM0 C:\new /E /ZB /COPYALL /256 /R:3 /W:1 /X /V /TS  
/FP /NP /ETA /LOG:w:\ROBO.LOG /TEE /NJH

이 조합이 질문에 답하고 문제를 해결하는 데 가장 효과적이라는 것은 파워셸 이후 문제를 해결하는 데는 이 조합이 가장 효과적입니다.EXE는 'gui'를 열지 않고(허용된 경우 'stdout' 및 'stderr' 피드백이 하나의 창에 모두 표시됨), 파일에 불필요한 드라이브 문자를 입력하거나 명령을 내리는 'stdout'을 제공합니다.제가 맞다면 '장치 경로'는 항상 동일하게 적용됩니다. 비록 이를 확인하지는 않았지만, 제 컴퓨터에서만 해당되는지 여부는 알 수 없습니다.

파워셸의 사용에 관한 문제.EXE 명령 PROPMT를 통한 EXE

한 가지 문제는 제 컴퓨터일 수도 있지만 파워셸을 반복하는 것이 좋습니다.EXE 명령은 대부분의 경우 저와 제 배치 파일에서 'Attached : False'를 첫 번째 시도의 결과로, 마운트 해제(false)와 이미지 해제(false)를 모두 수행하기 때문입니다.그러면 '시스템에서 지정한 경로를 찾을없습니다'와 같은 오류가 발생합니다.이는 다른 명령이 의도된 '마운트 포인트' 및 이미지를 참조하는 순간에 이어집니다.

부록 05-feb-2017: \"를 사용한 해결책을 알게 되었습니다.\CDROMX는 /256을 추가할 때만 작동하는 것으로 보이며, 그렇지 않으면 다음 메시지와 함께 실패할 수 있습니다.

2017/02/05 01:11:15 ERROR 53 (0x000035)원본 디렉토리에 액세스하는 중 \.\CDROM0\ 네트워크 경로를 찾을 수 없습니다.

저는 이것이 사람들에게 도움이 되기를 바랍니다. 메모장 긴 줄 설정에 따라 72는 스택 오버플로우에 보기 흉한 레이아웃을 만듭니다.

저는 VHD를 장착하고 있는데 합격된 답변이 나오지 않았습니다.몇 가지 추가 명령을 통해 결과를 파이프링하면 그렇게 됩니다.

$mountResult = Mount-DiskImage C:\some.VHD -PassThru
($mountResult | Get-Disk | Get-Partition | Get-Volume).DriveLetter

저는 파워쉘 초보라서 뭔가 잘못하고 있거나 ISO가 아닌 VHD를 사용하고 있기 때문일 수도 있습니다.

효과가 있었습니다.

$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 ''), '')):\"

오늘에서야 파워셸을 보기 시작했는데 동료가 같은 질문을 하는 것을 들었습니다.그게 도움이 된다면, 저는 그것을 하나의 줄로 묶었습니다.그들이 비슷한 질문을 하고 있던 다른 스레드에도 이 글을 올렸습니다.

mountvol "Y:" (Mount-Disk Image - ImagePath "c:\x.iso" - NoDriveLetter | Get-Volume).UniqueId

그런 다음 마운트 해제 방법:

디스크 이미지 마운트 해제 - 이미지 경로 "c:\x.iso"

안부 전합니다

언급URL : https://stackoverflow.com/questions/16452901/how-do-i-get-the-drive-letter-for-the-iso-i-mounted-with-mount-diskimage

반응형