web-dev-qa-db-ja.com

Windows 10でコマンドラインからVHDをマウント解除する方法

Windows 10でバッチスクリプトを使用してVHDのマウントを解除する必要があります。オンラインで見つけた唯一の解決策は、Windows 7に向けられており、Diskpartに関係していました。仕事をすることができる他の利用可能なネイティブのWindowsコマンドラインツールはありますか?

9
Zerobinary99

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
6
Zerobinary99

ネイティブの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機能を有効にする する必要があることです。

3
Anton Krouglov

これは拡張された答えです:(VHDをアンマウントする方法を収集できるはずです)

HowToブート/シャットダウン時にVHDファイルを自動的にマウントおよびアンマウントします

Windows 10では、状況が少し変わったようです。

最初に、Linuxファイルサーバーに格納されているVHDをマウントし、SMB経由でマウントしていることを言う必要があります。

次に、非常に重要なことですが、再起動時にディスクを切り離さない場合、再接続しようとすると、「ファイルは使用中でアクセスできません」と表示されます。

したがって、自動マウントとアンマウントの両方が必要です。アンマウントは、スタートアップフォルダーに置くだけではできないため、少しトリッキーであることがわかりました。グループポリシーを使用する必要があります。また、「シャットダウン/起動」スクリプトとして実行すると、早期に実行されたため、「ログオン/ログオフ」で実行する必要があります。

C:\mountに4つのファイルがあります

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を開始して、スクリプトをログオン/ログオフに追加します。

enter image description here

1