【 Mount-VHD 】コマンドレット――仮想ディスクを接続(マウント)しディスクとして使用可能にする:Windows PowerShell基本Tips(110)
本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Mount-VHD」コマンドレットを解説します。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、仮想ディスクを接続(マウント)しディスクとして利用可能にする「Mount-VHD」コマンドレットです。
Mount-VHDコマンドレットとは?
「仮想ディスク」は物理ディスクと同じ機能を持ちながら、OSからは“1つのファイル”として扱うことが可能なディスクイメージファイルです。そのため、Windowsの「エクスプローラー」からは単なるファイルとして見えるため、物理ディスクのように扱うことはできません(画面1)。
この状態では仮想ディスクに格納されているファイルに対して読み込み/書き込みができないため、OSから仮想ディスクを物理ディスクと同じように認識させる必要があります。そこで、仮想ディスクを「接続(マウント)する」ことで、物理ディスクと同じように扱うことができるようになります。
GUI(グラフィカルユーザーインタフェース)ツールでは、「ディスクの管理」ツールの「操作」メニューから「VHDの接続」を実行することで仮想ディスクをマウントできます。Windows PowerShellで仮想ディスクをマウントする場合は、今回紹介するMount-VHDコマンドレットを使用します。
【注】Mount-VHDは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットです。GUIの「Windowsの機能の有効化」や「役割と機能の追加」から「Hyper-V」を有効にするか、Windows PowerShellで「Enable-WindowsOptionalFeature」コマンドレットで有効にすることで使用できます。
Mount-VHDコマンドレットの主なオプション
オプション | 意味 |
---|---|
-Path | マウントする仮想ディスクのパスを指定する |
-NoDriveLetter | ドライブレターを設定せずにマウントする場合に指定する。省略可能 |
-ReadOnly | 読み取り専用状態でマウントする場合に指定する。省略可能 |
-Passthru | オブジェクトをパイプで渡す場合に使用する。省略可能 |
指定した仮想ディスクをマウントする
Mount-VHDコマンドレットを必須オプションの「-Path」で仮想ディスクのパスを指定して実行することで、仮想ディスクをマウントできます(画面2)。なお、Mount-VHDコマンドレットは管理者権限で実行する必要があります。
コマンドレット実行例
Mount-VHD -Path D:\VHDFolder\DataDisk_01.vhdx
上記実行例では、Mount-VHDコマンドレット実行前後に「Get-Disk」コマンドレット(本連載第90回で紹介)で現在認識しているディスクを確認しています。Mount-VHDコマンドレット実行後、ディスク番号「2」のディスクが増えていることが分かります。
また、「Get-Partition」コマンドレット(本連載第94回で紹介)でパーティション情報も確認していますが、仮想ディスク上のパーティション(ボリューム)に対してドライブレター「E」が自動的に付与されていることが分かります。
実行例のように、Mount-VHDコマンドレット実行時に利用可能なパーティション(ボリューム)が存在した場合は自動的にドライブレターが付与されますが、ドライブレターを自動付与したくない場合には「-NoDriveLetter」オプションを使用します(画面3)。
コマンドレット実行例
Mount-VHD -Path D:\VHDFolder\DataDisk_01.vhdx -NoDriveLetter
-NoDriveLetterオプションを使用した場合は、Get-Partitionコマンドレットの結果通り、ドライブレターが付与されていないことが確認できます。
「読み取り専用」で仮想ディスクをマウントする
「-ReadOnly」オプションを使用することで、仮想ディスクを“読み取り専用ディスク”としてマウントできます(画面4)。
コマンドレット実行例
Mount-VHD -Path D:\VHDFolder\DataDisk_01.vhdx -ReadOnly
-ReadOnlyオプションを使用した場合、Mount-VHDコマンドレット実行後のGet-Diskコマンドレットの結果通り、「IsReadOnly」の値が「True」になっていることからも、読み取り専用ディスクとしてマウントされていることが分かります。従って、その仮想ディスク上のボリュームに新規フォルダを作成しようとしても、「書き込み禁止」となっているために作成できません。
コマンドレットをパイプでつないで実行する
Mount-VHDコマンドレットと他のコマンドレットをパイプ(|)でつないで実行した場合、つないだコマンドレットの実行結果は何も表示されません。以下の画面5は、Get-Diskコマンドレットをパイプでつないで実行した例ですが、何も表示されていません。
なお、Windows PowerShellのスクリプトにおいて、Mount-VHDコマンドレットでパイプを使用してコマンドレットを実行する際には、「-Passthru」オプションを使用して“明示的にオブジェクトをパイプに渡す”ようにします(画面6)。
コマンドレット実行例
Mount-VHD -Path D:\VHDFolder\DataDisk_01.vhdx -Passthru | Get-Disk
Windows PowerShellのスクリプトでパイプを使用する場合には、“明示的にオブジェクトを引き渡す”必要があることに注意してください。
筆者紹介
後藤 諭史(ごとう さとし)
Microsoft MVP for Cloud and Datacenter Management(2012-2024)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.