Hyper-Vで仮想マシンとホストマシン間でファイルを転送する方法

Hyper-Vで仮想マシンとホストマシン間でファイルを転送する方法

Windows環境で利用できる仮想化機能「Hyper-V」を利用していて、Hyper-Vマネージャーから仮想マシンへ接続して、仮想マシンとホストマシンの間で、テキストデータやファイルなどをコピーしたいときがあります。

そこでここでは、Windows 10のHyper-Vを例に、Hyper-Vマネージャーから仮想マシンへ接続して、仮想マシンとホストマシンの間でテキストデータやファイルなどのバイナリデータを転送する方法を紹介します。

仮想マシンへの接続方法

Hyper-Vマネージャーから仮想マシンへ接続する方法としては「基本セッション」と「拡張セッション」の2種類があり、すべての仮想マシンは基本セッションで接続でき、仮想マシンのOSがWindowsの場合は、基本セッションに加えてリモートデスクトップ技術を使った拡張セッションでも接続することができます。

なお、基本セッションで仮想マシンに接続した場合と、拡張セッションで仮想マシンに接続したい場合とでは、転送/共有できるデータに違いがあります。

基本セッションでの接続時

仮想マシンに基本セッションで接続しているときは、ホストマシンから仮想マシンにテキストデータのみ送ることができます。

ホストマシンから仮想マシンにテキストデータを送るときは、ホストマシンでテキストデータをコピー(クリップボードに格納)してから、仮想マシンの接続画面で「クリップボード」メニューから「クリップボードからテキストを入力」を選択します。

Hyper-Vで仮想マシンとホストマシン間でファイルを転送する方法

なお、テキストデータの転送速度はそれほど速くないため、文字数が多いと転送に時間がかかり、文字数が多すぎる(3000文字程度)とエラーで送ることができないこともあるので注意が必要です。

拡張セッションでの接続時

拡張セッションは、リモートデスクトップ技術を使って仮想マシンに接続する方法で、仮想マシンに拡張セッションで接続しているときは、ホストマシンと仮想マシンの間でクリップボードを共有して、テキストデータだけでなくファイルなどのバイナリデータを双方向でやり取りできます。

拡張セッションは、仮想マシンのOSがWindowsの場合にのみ利用できる接続方法ですが、一部のLinuxディストリビューション(Ubuntuなど)が稼働している仮想マシンでは、仮想マシンに追加のツールをインストールすることで、拡張セッションで接続できる場合があるようです。

ホストマシンとWindowsの仮想マシン間でクリップボードが共有できない(コピペできない)ときは、仮想マシンの接続画面で「表示」メニューを開いて「拡張セッション」にチェックが入っているか確認するとよいでしょう。

Hyper-Vで仮想マシンとホストマシン間でファイルを転送する方法

また、拡張セッションではホストマシンの特定のドライブを仮想マシンと共有することもでき、クリップボードの共有では転送できない大容量のファイルを転送したいときに役立ちます。

ホストマシンの特定のドライブを仮想マシンと共有するときは、Hyper-Vマネージャーで対象の仮想マシンを右クリックして、メニューから「セッション設定の編集」をクリックします。

Hyper-Vで仮想マシンとホストマシン間でファイルを転送する方法

設定画面が表示されたら、画面左下の「オプションを表示」をクリックしてから「ローカルリソース」タブで「詳細」をクリックします。

Hyper-Vで仮想マシンとホストマシン間でファイルを転送する方法

「ローカルリソース」画面が表示されるので「ドライブ」を展開して、共有したいドライブにチェックを入れます。

Hyper-Vで仮想マシンとホストマシン間でファイルを転送する方法

以上の設定で仮想マシンに接続すると、指定したホストマシンのドライブが、仮想マシンのエクスプローラーに「リダイレクトされたドライブ」として表示されるようになり、通常のファイル操作と同じ感覚でホストマシンと仮想マシンの間でファイルを転送することができます。

Hyper-Vで仮想マシンとホストマシン間でファイルを転送する方法

Hyper-V上のWindows仮想マシンに拡張セッションでサインインできない理由と対処方法
Hyper-V上のWindows仮想マシンに拡張セッションでサインインできない理由と対処方法
Hyper-VでWindows 10やWindows 11の仮想マシンに「拡張セッション」でサインインできない理由と対処方法を紹介します。

あとがき

なお、Hyper-Vマネージャーを経由する必要がなければ、一般的なリモートマシンへの接続方法で仮想マシンに接続してファイル転送するとよいでしょう。(Windowsの仮想マシンならリモートデスクトップ接続、Linuxなどの仮想マシンならSSH接続)

また、プライベートネットワーク上のLinux仮想マシンとHyper-Vマネージャー以外の経路でファイル転送したい場合は、仮想マシンとホストマシンの両方で読み書きができるファイルシステム(exFATなど)の仮想ハードディスクを使って転送するという方法も考えられるでしょう。