検索
連載

【 Get-VM 】コマンドレット――コンピュータ上の仮想マシンの情報を取得するWindows PowerShell基本Tips(118)

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

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

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、コンピュータ上で動作する仮想マシンの情報を取得する「Get-VM」コマンドレットです。

Get-VMコマンドレットとは?

 「Windows Server 2008」で標準搭載されたハイパーバイザー型の仮想化技術「Hyper-V」は、企業内システムでも一般的に利用されています。次期Windows Server「Windows Server 2025」においても進化を続けており、ますます便利になっています。また、クライアントOSである「Windows 10」や「Windows 11」でも動作するため、活用の幅は広がるばかりです。

 Hyper-Vマネージャーは仮想マシンの全ての操作(参照、作成、変更、削除)を直感的にできることが特徴ですが、「Hyper-V上にある100個の仮想マシンの情報を取得したい」というようなシナリオには不向きです(画面1)。

ALT
画面1 Hyper-Vを管理するためのGUIツール「Hyper-Vマネージャー」

 Hyper-Vマネージャーは仮想マシンの参照/作成/変更/削除の操作が全て可能で、非常に分かりやすく操作できることが特徴ですが、「Hyper-V上にある100個の仮想マシンの情報を取得したい」というようなシナリオには不向きです。

 そうしたシナリオでは、Windows PowerShellによる操作が適していることは言うまでもありません。中でも、Hyper-V上で動作する仮想マシンの情報を取得可能なコマンドレットが、今回紹介するGet-VMになります。

 また、仮想マシンの設定変更といったシナリオでは、作業対象の仮想マシンを特定する必要があります。Get-VMコマンドレットはその特定作業を実施できるため、仮想マシンの設定変更や削除作業の起点となる非常に重要なコマンドレットになります。

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


Get-VMコマンドレットの書式

Get-VM [オプション]


Get-VMコマンドレットの主なオプション

オプション 意味
-Name 指定した仮想マシン名を持つ仮想マシンを取得する。省略可能
-ID 指定したIDを持つ仮想マシンを取得する。省略可能

コンピュータのHyper-V上で動作する仮想マシンを取得する

 Get-VMコマンドレットをオプションを指定せずに実行した場合、コンピュータのHyper-V上で動作する仮想マシンを取得します(画面2)。

コマンドレット実行例

Get-VM

ALT
画面2 Get-VMコマンドレットでHyper-V上で動作する仮想マシンの一覧を取得した

 Get-VMコマンドレットを実行すると、仮想マシン名や電源状態、稼働時間、ステータスなどが表示されますが、「Format-List」(FLと省略可能)を併用することで、仮想マシンの詳細情報を取得できます。

 しかし、全ての仮想マシンの詳細情報を取得すると情報量があまりにも大きくなってしまうため、特定の仮想マシンを指定するためのオプションとして「-Name」オプションが用意されています(画面3)。

コマンドレット実行例

Get-VM -Name Test-VM01 | fl *

ALT
画面3 仮想マシン名「Test-VM01」を指定し、Format-Listのオプションで「*」を指定して詳細情報を取得した

 Format-Listで「*」オプションを付与して実行すると、取得可能なプロパティを全て取得します。取得できる情報としては画面3に表示されている情報の他、設定されている仮想プロセッサ数や接続されている仮想ハードディスク、仮想ネットワークアダプター、使用している統合サービスなどがあります。


複数の仮想マシンで同じ仮想マシン名が設定されている場合の操作

 Hyper-Vでは“同じ仮想マシン名を付与する”ことが許容されており、画面4のようにHyper-V上で同一の仮想マシン名が動作します。

ALT
画面4 同じ仮想マシン名を持つ仮想マシンが存在する場合、「-Name」オプションでは単一の仮想マシンを特定できない

 このような状態の場合、画面4の「Get-VM -Name Test-VM01」の出力結果のように「-Name」オプションで仮想マシンを特定しようとしても単一の仮想マシンだけを取得できません。

 このような状態で仮想マシンを特定したい場合は、仮想マシンに割り振られている「VMID」を利用します。VMIDは仮想マシンごとに採番される唯一のID(GUID:グローバル識別子)であり、重複しないようになっています。

 仮想マシンのVMIDを確認するには、Format-Listや「Format-Table」を併用し表示するプロパティにVMIDを指定して、Get-VMコマンドレットを実行します。

 確認できたVMIDを「-Id」オプションを使用して指定することで、単一の仮想マシンを取得できます(画面5)。

コマンドレット実行例

Get-VM -Id 74602ce5-e9a2-4659-99c9-8b908e1b0b34

ALT
画面5 VMID「74602ce5-e9a2-4659-99c9-8b908e1b0b34」を指定し、単一の仮想マシンを取得した

 なお、VMIDは仮想マシンの「仮想マシン構成ファイル名」にも利用されているため、ファイル名でも確認可能です(画面6)。

ALT
画面6 VMIDは仮想マシン構成ファイル名にも利用されている

条件に基づいて仮想マシンを取得する

 特定のステータスやプロパティ値で仮想マシンを抽出したい場合には、「Where-Object」コマンドレットとの併用が便利です。例えば、電源オン状態の仮想マシンは「State」プロパティの値が「Running」であることを利用して、電源オン状態の仮想マシンだけを抽出できます(画面7)。

コマンドレット実行例

Get-VM | Where-Object { $_.State -eq "Running"}

ALT
画面7 Where-Objectコマンドレットを併用して、「State」プロパティが「Running」(電源オン状態)の仮想マシンだけを取得した

 また、特定のメモリ量や特定の仮想プロセッサ数など、設定値を条件とした仮想マシンの抽出も可能です(画面8)。

ALT
画面8 仮想プロセッサ数が「4」と「1」の仮想マシンをそれぞれ抽出した

筆者紹介

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る