検索
連載

【 Mount-VHD 】コマンドレット――仮想ディスクを接続(マウント)しディスクとして使用可能にするWindows PowerShell基本Tips(110)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Mount-VHD」コマンドレットを解説します。

Share
Tweet
LINE
Hatena
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、仮想ディスクを接続(マウント)しディスクとして利用可能にする「Mount-VHD」コマンドレットです。

Mount-VHDコマンドレットとは?

 「仮想ディスク」は物理ディスクと同じ機能を持ちながら、OSからは“1つのファイル”として扱うことが可能なディスクイメージファイルです。そのため、Windowsの「エクスプローラー」からは単なるファイルとして見えるため、物理ディスクのように扱うことはできません(画面1)。

ALT
画面1 Windowsのエクスプローラーからは、仮想ディスクはファイルとして扱われている

 この状態では仮想ディスクに格納されているファイルに対して読み込み/書き込みができないため、OSから仮想ディスクを物理ディスクと同じように認識させる必要があります。そこで、仮想ディスクを「接続(マウント)する」ことで、物理ディスクと同じように扱うことができるようになります。

 GUI(グラフィカルユーザーインタフェース)ツールでは、「ディスクの管理」ツールの「操作」メニューから「VHDの接続」を実行することで仮想ディスクをマウントできます。Windows PowerShellで仮想ディスクをマウントする場合は、今回紹介するMount-VHDコマンドレットを使用します。

【注】Mount-VHDは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットです。GUIの「Windowsの機能の有効化」や「役割と機能の追加」から「Hyper-V」を有効にするか、Windows PowerShellで「Enable-WindowsOptionalFeature」コマンドレットで有効にすることで使用できます。


Mount-VHDコマンドレットの書式

Mount-VHD [オプション]


Mount-VHDコマンドレットの主なオプション

オプション 意味
-Path マウントする仮想ディスクのパスを指定する
-NoDriveLetter ドライブレターを設定せずにマウントする場合に指定する。省略可能
-ReadOnly 読み取り専用状態でマウントする場合に指定する。省略可能
-Passthru オブジェクトをパイプで渡す場合に使用する。省略可能

指定した仮想ディスクをマウントする

 Mount-VHDコマンドレットを必須オプションの「-Path」で仮想ディスクのパスを指定して実行することで、仮想ディスクをマウントできます(画面2)。なお、Mount-VHDコマンドレットは管理者権限で実行する必要があります。

コマンドレット実行例

Mount-VHD -Path D:\VHDFolder\DataDisk_01.vhdx

ALT
画面2 仮想ディスクのパスを指定してMount-VHDコマンドレットを実行した結果

 上記実行例では、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

ALT
画面3 -NoDriveLetterオプションを使用してMount-VHDコマンドレットを実行した結果。ドライブレターが付与されていない

 -NoDriveLetterオプションを使用した場合は、Get-Partitionコマンドレットの結果通り、ドライブレターが付与されていないことが確認できます。


「読み取り専用」で仮想ディスクをマウントする

 「-ReadOnly」オプションを使用することで、仮想ディスクを“読み取り専用ディスク”としてマウントできます(画面4)。

コマンドレット実行例

Mount-VHD -Path D:\VHDFolder\DataDisk_01.vhdx -ReadOnly

ALT
画面4 -ReadOnlyオプションを使用してMount-VHDコマンドレットを実行すると、読み取り専用ディスクとしてマウントできる

 -ReadOnlyオプションを使用した場合、Mount-VHDコマンドレット実行後のGet-Diskコマンドレットの結果通り、「IsReadOnly」の値が「True」になっていることからも、読み取り専用ディスクとしてマウントされていることが分かります。従って、その仮想ディスク上のボリュームに新規フォルダを作成しようとしても、「書き込み禁止」となっているために作成できません。


コマンドレットをパイプでつないで実行する

 Mount-VHDコマンドレットと他のコマンドレットをパイプ(|)でつないで実行した場合、つないだコマンドレットの実行結果は何も表示されません。以下の画面5は、Get-Diskコマンドレットをパイプでつないで実行した例ですが、何も表示されていません。

ALT
画面5 パイプでつないでGet-Diskコマンドレットを実行したが、実行結果は表示されない

 なお、Windows PowerShellのスクリプトにおいて、Mount-VHDコマンドレットでパイプを使用してコマンドレットを実行する際には、「-Passthru」オプションを使用して“明示的にオブジェクトをパイプに渡す”ようにします(画面6)。

コマンドレット実行例

Mount-VHD -Path D:\VHDFolder\DataDisk_01.vhdx -Passthru | Get-Disk

ALT
画面6 -Passthruオプションを使用することで、Mount-VHDコマンドレットのオブジェクトを後続のコマンドレットに引き渡すことができた

 Windows PowerShellのスクリプトでパイプを使用する場合には、“明示的にオブジェクトを引き渡す”必要があることに注意してください。

筆者紹介

後藤 諭史(ごとう さとし)

Microsoft MVP for Cloud and Datacenter Management(2012-2024)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る