Windows 10에서 명령 줄을 통해 VHD를 마운트 해제하는 방법


9

Windows 10에서 배치 스크립트를 사용하여 VHD를 마운트 해제해야합니다. 온라인에서 찾은 유일한 솔루션은 Windows 7과 Diskpart와 관련이있었습니다. 작업을 수행 할 수있는 다른 기본 Windows 명령 줄 도구가 있습니까?


cmd에서 까다로울 수 있습니다. 나는 powershell을 모른다. 그러나 powershell은 그렇게 많이한다. 예를 들어 많은 링크들은 powershell이 ​​원하는 것을 할 수 있다고 virtualizationadmin.com/kbase/VirtualizationTips/…technet.microsoft.com/en-us/library/hh848562(v=wps .630) .aspx
barlop

@barlop 귀하의 의견과 링크에 감사드립니다. Powershell이 ​​설치되지 않은 시스템에서 배치를 실행할 수 있어야하므로 옵션이 아닙니다.
Zerobinary99

diskpart를 사용하지 않으려는 특별한 이유가 있습니까? 예를 들어 비 대화식 방식으로 실행될 수 있으므로 diskpart 스크립트를 파일 script.txt로 반향하는 배치 파일을 만들 수 있습니다. 그러면 diskpart / s script.txt를 수행합니다. 여기에는 diskpart 스크립트의 예가 있습니다. technet.microsoft .com / en-us / library / dn614984.aspx
barlop

@ barlop 나는 diskpart-solution을 알고 있으며 현재 다른 시스템에서 사용하고 있습니다. 이 작업을 수행하려는 디스크에는 디스크 파트가 없습니다.
Zerobinary99

나는 그것을하는 타사를 찾는 것조차 충분하지 않다고 생각합니다. 기본 명령은 꽤 잘 알려져 있으며 diskpart 이외의 다른 명령은 없습니다. diskpart가하는 것은 거의 기적입니다. (diskpart는 fdisk와 같은 "간단한"프로그램이기 때문에 사람들은 옵션을 눈치 채지 않고 사용하는 경향이 있습니다. 다른 기본 명령이 있다는 생각은 거의 생각할 수 없습니다. 배치 파일을 넣을 수 있다면 거기에 diskpart와 같은 프로그램을 넣을 수 없습니까?
barlop

답변:


6

MS가 설치 한 명령 줄 도구에만 의존하는 방법을 찾지 못했기 때문에 타사 솔루션을 나열하겠습니다.


WinApiExec

WinApiExec을 사용하면 명령 줄에서 Windows API를 호출 할 수 있습니다. 32 비트 실행 파일은 크기가 3.5KB (x64 : 5.5KB)에 불과하므로 엄청나게 작아서 가능한 적은 오버 헤드가 발생합니다.

winapiexec.exe virtdisk.dll@OpenVirtualDisk $a:2,0 "C:\Example Path\Test.vhd" 262144 0 0 $b:4 , virtdisk.dll@DetachVirtualDisk $$:7@0 0 0

v 마운트

vMount 는 상당히 많은 VHD 관련 기능을 지원합니다. 크기 (x86 : 432KB; x64 : 2.53MB)는 WinApi를 호출하기에는 다소 크므로 시나리오에 대한 해결책은 아니지만 다른 사람들에게 유용 할 수 있습니다.

vmount detach \\.\PhysicalDriveX

DiskPart

완전성을 위해 DiskPart도 언급되어야합니다. 많은 디스크 관련 기능을 지원하지만 스크립팅 목적으로 필요한 사용자 입력을 자동화하기에는 다소 느린 방법이 있습니다. 또한 높은 권한없이 실수로 스크립트를 실행하면 목록에있는 유일한 도구입니다.

다음 두 줄을 텍스트 파일로 저장하십시오.

vdisk file="C:\Example Path\Test.vhd"
detach vdisk

이제 Dism은 텍스트 파일을 무인 응답 파일 형식으로 구문 분석 할 수 있습니다.

DISKPART /s C:\Path_to\Name_Of_Textfile.txt

3

기본 Windows 10 Powershell을 사용하여 vhd / vhdx를 마운트 및 마운트 해제 할 수 있습니다.

Import-module hyper-v
Dismount-VHD -Path 'c:\my.vhd'

cmd / bat에서 :

powershell -command "Import-module hyper-v; Dismount-VHD -Path 'c:\my.vhd'"

두 경우 모두 관리자 권한으로 실행 프롬프트를 사용해야합니다.

주목해야 할 또 다른 사항은 Hyper-V 기능을 먼저 활성화 해야한다는 것 입니다.


내 의견에서 내 질문에 : "일괄 처리는 Powershell이 ​​설치되지 않은 시스템에서 실행될 수 있어야하므로 옵션이 아닙니다."
Zerobinary99

내가 아는 한 Powershell은 Windows 10의 필수 부분이므로 (Windows 10에 대해 문의 한 경우) 설치하거나 제거 할 수 없습니다 . 그러나 그룹 정책과 같은 다양한 방법으로 실행이 차단 될 수 있습니다.
Anton Krouglov

왜 조건에 의문을 갖고 있습니까? 그들에게는 이유가 있습니다. Powershell없이 Windows Lite를 사용하고 있으며 더 가벼운 옵션이있는 경우 필요하지 않은 전체 플랫폼을 유지하는 것을 싫어합니다.
Zerobinary99

1
나는 비슷한 문제가있다. 인터넷 검색은 오래된 질문을 산출했다. 따라서이 답변은 다른 사람들에게도 도움이 될 수 있습니다.
Anton Krouglov

이 질문은 2 년이 넘었고 요구 사항에 대해 제목이 모호하기 때문에이 답변은 다른 사람들에게도 도움이됩니다. 이 사이트의 운영 방식 및 정책에 대해 자세히 알아 보려면 스택 교환 메타를 더 읽어야합니다. 답변 이러한 종류의 지역 사회를위한 매우 유용 @ Zerobinary99
FreeSoftwareServers

1

이것은 확장 된 답변입니다 (VHD 마운트 방법을 얻을 수 있어야 함)

방법 부팅 / 종료시 VHD 파일을 자동으로 마운트 및 마운트 해제합니다.

Windows 10에서는 상황이 약간 변경된 것 같습니다.

먼저 Linux 파일 서버에 저장된 VHD를 SMB 이상에 마운트한다고 말해야합니다.

둘째, 매우 중요한 것은 다시 부팅 할 때 디스크를 분리하지 않으면 다시 연결하려고 할 때 "파일이 사용 중이며 액세스 할 수 없습니다"라는 메시지가 표시됩니다.

따라서 자동 마운트와 마운트 해제가 모두 필요합니다. 마운트 해제는 시작 폴더에 넣을 수 없으므로 약간 까다로 웠습니다. 그룹 정책을 사용해야합니다. 또한 "종료 / 시동"스크립트로 실행할 때 초기에 실행 된 경우 "로그온 / 로그 오프"에서 실행해야합니다.

파일이 4 개 있습니다 C:\mount

mount.cmd

@ECHO OFF

DISKPART /s C:\mount\mount.txt

umount.cmd

@ECHO OFF

DISKPART /s C:\mount\umount.txt

umount.txt

select vdisk file="\\192.168.1.255\Blizzard.vhdx"
detach vdisk

mount.txt

select vdisk file="\\192.168.1.255\Blizzard.vhdx"
attach vdisk

이제 시작 유형 / 실행 gpedit.msc에서 로그온 / 로그 오프 할 스크립트를 추가하십시오.

여기에 이미지 설명을 입력하십시오


답변 주셔서 감사하지만 이것은 문제에 대한 해결책이 아닙니다. Diskpart를 사용하는 것 외에 배치 호환 솔루션을 찾고있었습니다. 기본적으로 이미 내 대답에있는 것과 동일한 구문을 붙여 넣었습니다.
Zerobinary99

타사 도구를 사용하지 않고 내장 된 Windows 기능을 사용하는 것 외에도? 옥시 모론처럼 보입니다.
FreeSoftwareServers

다른 기본 Windows 기능을 요청했습니다 . 그것에 대해 옥시 모론은 없습니다. 일반적인 이해력 문제가있는 것 같습니다.
Zerobinary99
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.