Cara meng-unmount VHD melalui baris perintah di Windows 10

9

Saya perlu meng-unmount VHD dengan skrip batch di Windows 10. Satu-satunya solusi yang saya temukan online diarahkan pada Windows 7 dan melibatkan Diskpart. Apakah ada alat baris perintah Windows asli lain yang tersedia yang dapat melakukan pekerjaan itu?

Zerobinary99
sumber
dalam cmd mungkin rumit. Saya tidak tahu PowerShell tetapi PowerShell melakukan begitu banyak .. misalnya banyak tautan mengatakan PowerShell dapat melakukan apa yang Anda inginkan virtualizationadmin.com/kbase/VirtualizationTips/… dan technet.microsoft.com/en-us/library/hh848562(v=wps .630) .aspx
barlop
@barlop Terima kasih atas komentar dan tautannya. Batch harus dapat dijalankan pada sistem di mana Powershell tidak diinstal, jadi saya khawatir itu bukan pilihan.
Zerobinary99
apakah ada alasan khusus mengapa Anda tidak ingin menggunakan diskpart? misalnya ia dapat berjalan dengan cara yang tidak interaktif, sehingga Anda dapat memiliki file batch yang menggema skrip diskpart menjadi file script.txt, lalu skrip diskpart / s script.txt ada contoh skrip diskpart di sini technet.microsoft .com / en-us / library / dn614984.aspx
barlop
@barlop Saya mengetahui solusi diskpart dan saat ini saya menggunakannya pada sistem yang berbeda. Di mana ini dimaksudkan untuk bekerja tidak memiliki diskpart di atasnya.
Zerobinary99
Saya pikir itu akan cukup sulit bahkan menemukan pihak ketiga yang melakukannya. Perintah asli cukup terkenal, saya yakin tidak ada yang melakukannya selain diskpart. Hampir keajaiban bahwa diskpart melakukannya. (karena diskpart adalah program yang "sederhana" seperti halnya fdisk, dan orang cenderung menggunakannya tanpa memperhatikan opsi. Gagasan bahwa ada perintah asli lain yang akan melakukannya, hampir tidak terpikirkan. Jika Anda dapat meletakkan file batch di sana, tidak bisakah Anda meletakkan program seperti diskpart di sana?
barlop

Jawaban:

6

Karena saya belum menemukan cara untuk hanya mengandalkan alat baris perintah yang diinstal MS, saya akan mencantumkan solusi pihak ketiga.


WinApiExec

WinApiExec memungkinkan pengguna untuk memanggil API Windows dari baris perintah. Executable 32bit hanya berukuran 3.5KB (x64: 5.5KB) dan karenanya sangat kecil, memperkenalkan overhead sesedikit mungkin.

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 mendukung beberapa fungsi terkait VHD. Ukurannya (x86: 432KB; x64: 2.53MB) agak besar untuk hanya memanggil WinApi, jadi ini bukan solusi untuk skenario saya, tetapi mungkin berguna untuk orang lain.

vmount detach \\.\PhysicalDriveX

DiskPart

Demi kelengkapan, DiskPart juga akan disebutkan. Ini mendukung banyak fitur yang berhubungan dengan disk, tetapi memiliki cara yang agak lamban untuk mengotomatiskan input pengguna yang diperlukan jika tidak untuk tujuan scripting. Ini juga satu-satunya alat dalam daftar yang akan terjebak dalam satu lingkaran jika Anda secara tidak sengaja menjalankan skrip tanpa hak yang lebih tinggi.

Simpan dua baris berikut ke dalam file teks:

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

Sekarang, Dism dapat mem-parsing file teks sebagai bentuk file jawaban yang tidak dijaga:

DISKPART /s C:\Path_to\Name_Of_Textfile.txt
Zerobinary99
sumber
3

Anda dapat melakukan mount dan unmount vhd / vhdx menggunakan Windows 10 Powershell asli:

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

Dari cmd / bat:

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

Dalam kedua kasus Anda harus menggunakan prompt yang ditinggikan (Run as admin).

Hal lain yang perlu diperhatikan adalah Anda harus mengaktifkan fitur Hyper-V terlebih dahulu .

Anton Krouglov
sumber
Dari komentar saya ke pertanyaan saya: "Batch harus dapat berjalan pada sistem di mana Powershell tidak diinstal, jadi saya khawatir itu bukan pilihan."
Zerobinary99
Sejauh yang saya ketahui, Powershell adalah bagian integral dari Windows 10 (Anda telah bertanya tentang Windows 10), jadi Anda tidak dapat menginstal atau menghapus instalannya. Namun pelaksanaannya dapat diblokir dengan berbagai cara, seperti Kebijakan Grup.
Anton Krouglov
Mengapa Anda mempertanyakan kondisinya? Ada alasan untuk mereka. Saya menjalankan Windows Lite tanpa Powershell dan saya enggan menjaga seluruh platform yang tidak saya butuhkan jika ada lebih banyak opsi ringan yang tersedia
Zerobinary99
1
Saya memiliki masalah yang sama. Google telah menghasilkan pertanyaan lama Anda. Jadi jawaban ini mungkin bermanfaat bagi orang lain juga.
Anton Krouglov
Karena pertanyaan ini sudah lebih dari dua tahun dan judulnya tidak jelas mengenai kebutuhan Anda, jawaban ini membantu banyak orang lain seperti halnya jawaban saya yang diperluas. Anda harus membaca lebih banyak pertukaran stack Meta untuk mempelajari lebih lanjut tentang bagaimana situs ini beroperasi dan kebijakannya. Jawaban semacam ini sangat berguna untuk komunitas @ Zerobinary99
FreeSoftwareServers
1

Ini adalah jawaban yang diperluas: (Anda harus dapat mengumpulkan cara untuk melakukan umount VHD)

HowTo Secara otomatis me-mount dan umount file VHD saat boot / shutdown.

Tampaknya ada sedikit perubahan di Windows 10.

Pertama, saya harus mengatakan bahwa saya sedang memasang VHD yang disimpan di Server File Linux, pemasangan di lebih dari SMB.

Kedua, sangat penting, adalah bahwa jika Anda tidak melepaskan disk saat reboot, maka ketika Anda mencoba untuk melampirkan kembali, dikatakan "File sedang digunakan dan tidak dapat diakses" ..

Jadi kita membutuhkan automount dan unmount. Unmount terbukti sedikit menipu, karena saya tidak bisa memasukkannya ke folder startup. Anda harus menggunakan Kebijakan Grup. Juga, ketika dijalankan sebagai skrip "shutdown / startup", itu berjalan ke awal, Anda harus menjalankannya di "Logon / Logoff"

Saya punya 4 file di 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

Sekarang di mulai ketik / jalankan gpedit.mscdan tambahkan skrip ke logon / logoff

masukkan deskripsi gambar di sini

FreeSoftwareServers
sumber
Terima kasih atas jawabannya, tetapi ini bukan solusi untuk masalah ini. Saya mencari solusi yang kompatibel dengan batch selain menggunakan Diskpart. Anda pada dasarnya hanya menyisipkan sintaks yang sama yang sudah ada dalam jawaban saya.
Zerobinary99
Selain menggunakan fungsi built in windows tanpa menggunakan alat pihak ke-3? Tampak oximoronic.
FreeSoftwareServers
Saya meminta fungsi Windows asli lainnya . Tidak ada yang oxymoronic tentang itu. Menurut saya, Anda memiliki masalah pemahaman umum.
Zerobinary99