Tôi cần ngắt kết nối VHD với tập lệnh bó trong Windows 10. Giải pháp duy nhất tôi tìm thấy trực tuyến là hướng vào Windows 7 và liên quan đến Diskpart. Có công cụ dòng lệnh Windows gốc nào khác có thể thực hiện công việc không?
Tôi cần ngắt kết nối VHD với tập lệnh bó trong Windows 10. Giải pháp duy nhất tôi tìm thấy trực tuyến là hướng vào Windows 7 và liên quan đến Diskpart. Có công cụ dòng lệnh Windows gốc nào khác có thể thực hiện công việc không?
Câu trả lời:
Vì tôi không tìm thấy cách nào chỉ dựa vào các công cụ dòng lệnh do MS cài đặt, tôi sẽ liệt kê các giải pháp của bên thứ ba.
WinApiExec
WinApiExec cho phép người dùng gọi API Windows từ dòng lệnh. Tệp thực thi 32 bit chỉ có kích thước 3,5KB (x64: 5,5KB) và do đó nhỏ đến mức nực cười, giới thiệu càng ít chi phí càng tốt.
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
vMount
vMount hỗ trợ khá nhiều chức năng liên quan đến VHD. Kích thước của nó (x86: 432KB; x64: 2.53MB) khá lớn khi chỉ gọi WinApi, vì vậy đây không phải là giải pháp cho kịch bản của tôi, nhưng có thể hữu ích cho người khác.
vmount detach \\.\PhysicalDriveX
Đĩa
Để hoàn thiện, DiskPart cũng sẽ được đề cập. Nó hỗ trợ rất nhiều tính năng liên quan đến đĩa, nhưng có một cách khá chậm chạp về nó để tự động hóa đầu vào người dùng cần thiết cho các mục đích kịch bản. Đây cũng là công cụ duy nhất trong danh sách sẽ bị kẹt trong một vòng lặp nếu bạn vô tình chạy tập lệnh mà không có quyền nâng cao.
Lưu hai dòng sau vào một tệp văn bản:
vdisk file="C:\Example Path\Test.vhd"
detach vdisk
Bây giờ, Dism có thể phân tích tệp văn bản dưới dạng tệp trả lời không giám sát:
DISKPART /s C:\Path_to\Name_Of_Textfile.txt
Bạn có thể gắn kết và ngắt kết nối vhd / vhdx bằng Windows 10 Powershell:
Import-module hyper-v
Dismount-VHD -Path 'c:\my.vhd'
Từ cmd / bat:
powershell -command "Import-module hyper-v; Dismount-VHD -Path 'c:\my.vhd'"
Trong cả hai trường hợp, bạn phải sử dụng dấu nhắc nâng cao (Chạy với tư cách quản trị viên).
Một điều cần lưu ý là trước tiên bạn cần bật tính năng Hyper-V .
Đây là một câu trả lời mở rộng: (Bạn sẽ có thể lượm lặt làm thế nào để vượt qua VHD)
Làm thế nào để tự động gắn kết và vượt qua các tệp VHD khi khởi động / tắt máy.
Mọi thứ dường như đã thay đổi một chút trong Windows 10.
Trước tiên, tôi nên nói rằng tôi đang gắn VHD được lưu trữ trên Máy chủ tệp Linux, cài đặt trên SMB.
Thứ hai, rất quan trọng, là nếu bạn không tháo đĩa khi khởi động lại, thì khi bạn cố gắn lại, nó sẽ báo "Tệp đang được sử dụng và không thể truy cập được" ..
Vì vậy, chúng tôi cần cả automount và unmount. Unmount đã chứng minh một chút mánh khóe, vì tôi không thể đặt nó vào thư mục khởi động. Bạn phải sử dụng Chính sách nhóm. Ngoài ra, khi chạy dưới dạng tập lệnh "shutdown / startup", nó chạy đến sớm, bạn cần chạy nó ở "Logon / Logoff"
Tôi có 4 tập tin trong C:\mount
gắn kết.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
Bây giờ trong kiểu bắt đầu / chạy gpedit.msc
và thêm các tập lệnh để đăng nhập / đăng xuất