プチIT化

【Hyper-V】簡単!ホストからゲストOSにコマンドでファイルコピーする方法【Copy-VMFile】

こんにちは、わたあめです。Hyper-VでホストとゲストOSの間でのファイルやり取りについての記事です。

悩める人
悩める人
プライベートスイッチ接続のみだから、ホストとゲストOSとの間でファイルのやり取りが出来ない!

仮想マシン便利ですが、スイッチの構成によってはホストとゲストの間でファイルのやりとりどうすればいいのか?という疑問が出てくるかと思います。

  • 仮想ディスクでファイルのやり取り
  • 拡張セッション機能でファイルのやり取り
  • PowerShell「Copy-VMFile」コマンドでファイルのやり取り

この中で、私的にサクっと簡単にできるものを選びました!今回はPowerShellで「Copy-VMFile」コマンドを実行してのファイルコピー手順を紹介しています。前置きを飛ばして手順にジャンプしたい方は「「Copy-VMFile」コマンドでファイルコピーを行う手順」の章に移動してくださいね!

Hyper-Vホストとゲスト間でのファイルやり取り方法

ホストとゲスト間のファイルやり取り方法を紹介します。※今回試した手順はPowerShellのCopy-VMFileコマンドです。

仮想ディスクでのファイルやり取り

仮想ディスクを作成し、SCSIやIDEコントローラーに接続して、ファイルのやり取りを行います。

例えば、ホストからゲストへファイルを受け渡したい場合の流れは以下です。

  1. ホスト側で新規に仮想ディスクを作成
  2. 仮想ディスクに受け渡ししたいファイルを格納
  3. ホスト側から仮想ディスクを取り外し
  4. ゲスト側に仮想ディスクをマウント
めんどくさがり屋さん
めんどくさがり屋さん
仮想ディスクを毎度接続して・外して…の作業が意外と面倒!

過去にやったことがありますが、これはファイルのやり取りが多い場合は、あまりオススメしません。(面倒なので(小声))

拡張セッション機能でファイルのやり取り

Hyper-Vには拡張セッションという機能が用意されているようです。

  1. 拡張セッション機能を有効にする
  2. ツールバーにある拡張セッションボタンをクリックして接続を開始する

これで、画面間でファイルのコピー・ペーストが出来るようになるようです。

ただ、私のHyper-V環境では何故かグレーアウトしたままで、調べていると情報はありますが、今回はこの方法は諦めました。※今度、詳しく調べてみようと思います。

「Copy-VMFile」コマンドでファイルのやり取り

コマンドを使ったファイルのやり取り方法です。PowerShellを管理者権限で実行し、ファイルコピーを行う方法です。実行手順は次章で詳細に説明します。

わたあめ
わたあめ
私にとっては一番この方法が手っ取り早かったです!

「Copy-VMFile」コマンドでファイルコピーを行う手順

「Copy-VMFile」コマンドでファイルコピーを行ってみました。ゲストOSでゲストサービスを有効にして、PowerShellを使ってホストからゲストに対してコマンドを実行してみます。

ゲストOS側のゲストサービス有効化

Copy-VMFileコマンドを使うには、ゲストOS側の「ゲストサービス」という仮想ゲストとホストの間で通信を出来るようにするサービスを有効にしておきます。手順は、以下の通りです。

  1. Hyper-Vマネージャを起動
  2. 対象のゲストOSを右クリック > [設定] > (左側)[統合サービス]の順にクリック
  3. [ゲストサービス]のチェックを入れる

下準備が整ったところで、次はコマンドを実行してファイルをコピーしてみました。

PoweShellで「Copy-VMFile」コマンド実行

コマンドの実行はホストで行います。

  1. [PowerShell]を右クリック > [管理者として実行する]をクリック
  2. 以下コマンドを実行する
    Copy-VMFile "ゲストOS名" 送信元ファイルパス(ホスト側) 送信先フォルダパス(ゲスト側) -FileSource Host

使用例は以下の通りです。例えば、「Guest1」というゲストOSのCドライブにある「test」というフォルダに、ホストのCドライブ直下に保存されている「test.txt」ファイルを送信する場合、以下のようなコマンドを実行します。

Copy-VMFile "Guest1" C:\test.txt C:\test -FileSource Host

PowerShellでは「成功しました」というメッセージは出ませんので、実際のフォルダを見てファイルコピーできたかどうかを確認します。

余談:ゲストOSからホストOSへのコピーはできるのか

今回は、Hyper-VのホストからゲストOSへのファイルをコピーする「Copy-VMFile」コマンドを紹介しました。

悩める人
悩める人
逆方向のゲストOSからホストへのファイルコピーは出来るの?

Copy-VMFileコマンドを使って、ゲストOSからホストへのファイルコピーしたいという思いが出てきました。調べたところCopy-VMFileコマンドではゲストOSからホストへのファイルコピーが出来ませんでした。

コマンドで”-FileSource”を指定するのですが、ここで指定できる(許可されている値)は”Host”のみとのこと。以下マイクロソフト社のページでAccepted valuesがHostという記載があります。

このコマンドでは、ホストからゲストOSの一方向のみのコピーとなりそですね。ゲストからホストへのファイルコピーは拡張セッションモードを利用するのが手軽かもしれませんね。

さいごに

いかがだったでしょうか。プライベートスイッチのみの接続でゲストOS同士しか通信が出来ない環境で、インストール資材等をどうやってホストからゲストの仮想マシンに受け渡そうか悩んだ1日でした。同じような悩みを持った方の参考になれば幸いです。それでは、また!