検索
連載

【 Set-VM 】コマンドレット――Hyper-V仮想マシンの設定を変更するWindows PowerShell基本Tips(120)

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

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

連載目次

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

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

 本連載119回で紹介した「New-VM」コマンドレットでは仮想マシンを新規作成できますが、作成時に指定できない細かいオプションや、仮想マシンの稼働後に何かしらの理由で設定変更が必要になる場合もあるでしょう。

 そうした既存の仮想マシンに対して設定変更を行う際に、Set-VMコマンドレットを使用します。仮想マシンの新規作成時には指定できないオプションも多々あるので、こちらも押さえておきたいコマンドレットになります。

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


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

Set-VM [オプション]


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

オプション 意味
-Name 設定変更する仮想マシンの名前を指定する
-ProcessorCount 仮想マシンに割り当てる仮想プロセッサ数を指定する。省略可能
-DynamicMemory 仮想マシンを動的メモリ設定に変更する。省略可能
-MemoryMinimumBytes 動的メモリ設定時に、最小割り当てメモリ量を指定する。省略可能
-MemoryMaximumBytes 動的メモリ設定時に、最大割り当てメモリ量を指定する。省略可能
-StaticMemory 仮想マシンを静的メモリ設定へ変更する。省略可能
-MemoryStartupBytes 仮想マシンに割り当てるメモリ量を指定する。省略可能
-NewVMName 仮想マシン名を変更する際、新しい名前を指定する。省略可能
-AutomaticStartAction Hyper-Vホスト起動時の仮想マシンの自動起動設定を変更する。省略可能
-AutomaticStopAction Hyper-Vホスト停止時の仮想マシンの自動停止設定を変更する。省略可能

仮想マシンの仮想プロセッサ数を変更する

 New-VMコマンドレットで仮想マシンを作成すると、割り当て仮想プロセッサ数は自動的に「1」が設定されます。仮想マシンの処理性能を向上させるには、割り当てる仮想プロセッサ数を増やす必要があります。

 しかし、Hyper-Vホスト全体の処理能力を考えた場合、仮想プロセッサ数を減らす場合もあるでしょう。そうした場合に、「-ProcessorCount」オプションを使用することで、仮想マシンに割り当てた仮想プロセッサ数を変更できます(画面1)。なお、Set-VMコマンドレットは管理者権限で実行する必要があります。

コマンドレット実行例

Set-VM -Name Test-VM01 -ProcessorCount 2

ALT
画面1 「-ProcessorCount」オプションで割り当て仮想プロセッサ数を変更した

 画面1の例では「-ProcessorCount」オプションで「2」を指定したため、仮想プロセッサ数が「2」になりましたが、この状態で「-ProcessorCount」オプションを「1」として再実行した場合は、仮想プロセッサ数は「1」に戻ります。すなわち、「-ProcessorCount」オプションは変更後の仮想プロセッサ数を指定することで増減どちらにも対応できます。


仮想マシンのメモリ割り当てを「動的メモリ」設定に変更する

 Hyper-Vが仮想マシンへ割り当てるメモリ量を動的に変化させ、柔軟なメモリ管理を可能とする機能を「動的メモリ(Dynamic Memory)」と呼びます。動的メモリを使用するには、各仮想マシンでの設定が必要です。

 動的メモリは仮想マシンの新規作成時には有効化できません。したがって、作成後にSet-VMコマンドレットで有効化する必要があります。動的メモリの有効化には「-DynamicMemory」オプションを使用します(画面2)。

コマンドレット実行例

Set-VM -Name Test-VM01 -DynamicMemory

ALT
画面2 「-DynamicMemory」オプションで動的メモリを有効化した

 単純に動的メモリを有効化しただけになるので、画面2の例は「仮想マシン起動時に4GBを割り当て、メモリの需要に応じて512MBまで回収可とし、要求されれば1TB(1048576MB)まで追加可能」という設定になります。なお、最小値「512MB」、最大値「1TB」は仮想マシンを新規作成した際に設定されるデフォルト値(初期設定値)となります。

 仮想マシンによっては最小割り当て量を「1GB」として、Hyper-Vホスト全体のバランスを見て最大でも「8GB」までにしたい、というニーズもあるでしょう。その場合には、それぞれ「-MemoryMinimumBytes」オプションと「-MemoryMaximumBytes」オプションを使用して、メモリ量の下限と上限を設定します(画面3)。

コマンドレット実行例

Set-VM -Name Test-VM01 -DynamicMemory -MemoryMinimumBytes 1GB -MemoryMaximumBytes 8GB

ALT
画面3 「-MemoryMinimumBytes」オプションと「-MemoryMaximumBytes」オプションを使用して、動的メモリの下限と上限を設定した

 なお、各オプションはデフォルトでは「B(バイト)」での数値指定となりますが、「MB」「GB」などに単位を変更して指定することも可能です。

 動的メモリ設定を無効化し、従来の「静的メモリ」割り当てに変更したい場合は「-StaticMemory」オプションを使用します(画面4)。

コマンドレット実行例

Set-VM -Name Test-VM01 -StaticMemory

ALT
画面4 「-StaticMemory」オプションで動的メモリを無効化した

 動的メモリ設定を無効化しても「-MemoryMinimumBytes」オプションと「-MemoryMaximumBytes」オプションで設定した値は残りますが、動的メモリを有効化しない限り設定は無視されます。


仮想マシンの名前を変更する

 本連載118回で紹介したGet-VM」コマンドレットの記事中、「Hyper-Vでは“同じ仮想マシン名を付与する”ことが許容されている」と紹介しましたが、こういった状況を好ましくないと考える管理者は、仮想マシンの名前を変更することを考えるでしょう。

 その場合もSet-VMコマンドレットを用いることで、仮想マシンの名前を変更できます。

 しかし、前述のシナリオの場合、仮想マシン名で仮想マシンを特定できないため、Get-VMコマンドレットを併用して仮想マシン名を変更します(画面5)。

コマンドレット実行例

Get-VM -Id a6da6f1c-0838-4041-9d7c-260f8831d306 | Set-VM -NewVMName Test-VM02

ALT
画面5 「Get-VM」コマンドレットの「-Id」オプションで仮想マシンを特定し、「-NewVMName」オプションで仮想マシン名を変更した

 画面5の通り、Get-VMコマンドレットの「-Id」オプションを用いて同名の仮想マシンの一方を特定し、パイプ(|)でSet-VMコマンドレットにつなぎ、「-NewVMName」オプションで新しい名前を指定して、仮想マシン名を変更しました。

 このように併用も可能なので、「-Name」オプションの代わりに「Get-VM」コマンドレットを使用することもできます。


Hyper-Vホスト起動時/停止時の仮想マシンの挙動を変更する

 Hyper-Vの仮想マシンでは、Hyper-Vホストが起動した際、またはHyper-Vホストをシャットダウンした際の挙動を設定できます。

 具体的にはHyper-Vホストの起動と同時に仮想マシンを自動起動するといった設定や、自動起動する場合も起動タイミングをずらす、といった制御も可能です。

 Hyper-Vホスト起動時の挙動は「-AutomaticStartAction」オプションで、Hyper-Vホストがシャットダウンする際の挙動は「-AutomaticStopAction」オプションで設定できます(画面6)。

コマンドレット実行例

Set-VM -Name Test-VM01 -AutomaticStartAction Start -AutomaticStopAction ShutDown

ALT
画面6 「-AutomaticStartAction」オプションと「-AutomaticStopAction」オプションで、それぞれの起動時/停止時の挙動を設定した

 「-AutomaticStartAction」オプションで設定できる値は「Nothing(何もしない)」「Start(常に自動起動)」「StartIfRunning(サービスが停止する際に起動していた場合は、自動的に起動)」の3つです。また、「-AutomaticStopAction」オプションで設定可能な値は、「Save(保存)」「ShutDown(シャットダウン)」「TurnOff(停止)」の3つです。

 これらの設定は、仮想マシンが稼働しているHyper-Vホストの起動時/停止時の挙動となってくるため、最適な値に設定しておくことをお勧めします。

 例えば、停電などで自動的にHyper-Vホストがシャットダウンされた場合、復電後にHyper-Vホストが正常に起動したとします。その際、「-AutomaticStartAction」オプションで「Nothing」が指定されていた場合には、仮想マシンは自動起動せずに手動で起動する必要があります。場合によっては、起動までの間サービス断となってしまいます。

 「-AutomaticStartAction」はこうした事態を防ぐためのオプションとなっていますので、設定値は留意すべきです。


仮想マシン起動中のSet-VMコマンドレット実行

 仮想マシン起動中にSet-VMコマンドレット実行すると、項目によっては以下のようなエラーが発生し、設定変更できない場合があります(画面7)。

ALT
画面7 仮想マシン起動中に仮想プロセッサ数を変更しようとしたところ、エラーで設定できなかった

 Set-VMコマンドレットで設定を変更する項目の中には、仮想マシン起動中には変更できないものもあるので、その際は仮想マシンを停止してから設定を変更してください。

筆者紹介

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る