Windows 10でバッチスクリプトを使用してVHDをマウント解除する必要があります。オンラインで見つけた唯一の解決策は、Windows 7に向けられ、Diskpartを使用することでした。仕事をすることができる他の利用可能なネイティブのWindowsコマンドラインツールはありますか?
Windows 10でバッチスクリプトを使用してVHDをマウント解除する必要があります。オンラインで見つけた唯一の解決策は、Windows 7に向けられ、Diskpartを使用することでした。仕事をすることができる他の利用可能なネイティブのWindowsコマンドラインツールはありますか?
回答:
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
vMount
vMountは、かなりの数のVHD関連機能をサポートしています。そのサイズ(x86:432KB; x64:2.53MB)は、WinApiを呼び出すだけではかなり大きいので、私のシナリオでは解決策ではありませんが、他の人には役立つかもしれません。
vmount detach \\.\PhysicalDriveX
DiskPart
完全を期すために、DiskPartについても説明します。これは、ディスク関連の機能の多くをサポートしていますが、スクリプトを作成するために必要なユーザー入力を自動化するためのやや遅い方法です。また、昇格された権限なしで誤ってスクリプトを実行した場合にループに陥る、リスト上の唯一のツールでもあります。
次の2行をテキストファイルに保存します。
vdisk file="C:\Example Path\Test.vhd"
detach vdisk
これで、Dismはテキストファイルを無人応答ファイルの形式として解析できます。
DISKPART /s C:\Path_to\Name_Of_Textfile.txt
ネイティブの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'"
どちらの場合も、昇格した(管理者として実行)プロンプトを使用する必要があります。
もう1つ注意すべき点は、最初にHyper-V機能を有効にする必要があることです。
これは拡張された答えです:(VHDをアンマウントする方法を収集できるはずです)
HowToブート/シャットダウン時にVHDファイルを自動的にマウントおよびアンマウントします。
Windows 10では、状況が少し変わったようです。
最初に、Linuxファイルサーバーに格納されているVHDをマウントし、SMB経由でマウントしていることを述べておく必要があります。
次に、非常に重要なことですが、再起動時にディスクを切り離さない場合、再接続しようとすると、「ファイルは使用中でアクセスできません」と表示されます。
したがって、自動マウントとアンマウントの両方が必要です。アンマウントは、スタートアップフォルダーに置くだけではできないため、少しトリッキーであることがわかりました。グループポリシーを使用する必要があります。また、「shutdown / startup」スクリプトとして実行すると、早期に実行されたため、「Logon / Logoff」で実行する必要があります。
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
を開始し、スクリプトをログオン/ログオフに追加します