本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Add-VMNetworkAdapter」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、Hyper-Vの仮想マシンに仮想ネットワークアダプターを追加する「Add-VMNetworkAdapter」コマンドレットです。
Add-VMNetworkAdapterの概要 | 書式 | オプション
Hyper-Vで仮想マシンが物理ネットワークとつながるためには、Hyper-Vホストに用意された仮想スイッチに接続する仮想ネットワークアダプターが必要です。本連載第119回で紹介した「New-VM」コマンドレットを使用して仮想マシンを作成する際、「-SwitchName」オプションで接続する仮想スイッチを指定することで、仮想ネットワークアダプターを同時に作成するのが一般的だと思います。
しかし、さまざまな理由から仮想マシンに仮想ネットワークアダプターを新規作成し、仮想スイッチに接続するシナリオもあるでしょう。また、「仮想ネットワークアダプターは設定するけれども、仮想スイッチには接続したくない」というシナリオもあり得ます。
そうした仮想ネットワークアダプターを追加する際にひと工夫したい場合は、今回のAdd-VMNetworkAdapterは非常に使い勝手の良いコマンドレットでしょう。
Add-VMNetworkAdapterコマンドレットは、単純に仮想ネットワークアダプターを追加するだけではなく、仮想化基盤を運用する管理者にとって、かゆいところに手が届くコマンドレットになっているので、ぜひ使い方をマスターしてください。
【注】本コマンドレットは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットとなります。GUI(グラフィカルユーザーインタフェース)の「Windowsの機能の有効化」や「役割と機能の追加」からHyper-Vを有効化するか、PowerShellから「Enable-WindowsOptionalFeature」コマンドレットを使用して有効化します。
オプション | 意味 |
---|---|
-VMName | 仮想マシン名を指定する。-ManagementOSオプション指定時のみ省略可能 |
-ManagementOS | ホストOSに仮想ネットワークアダプターを追加したい場合に指定する。省略可能 |
-SwitchName | 追加する仮想ネットワークアダプターを接続する仮想スイッチ名を指定する。省略可能 |
-IsLegacy | レガシーネットワークアダプターを追加したい場合に指定する。省略可能 |
-Name | 追加したい仮想ネットワークアダプターの名前を指定する。省略可能 |
-VMNetworkAdapterName | -Nameオプションのエイリアスで同じように使用可能。省略可能 |
-DynamicMacAddress | 追加する仮想ネットワークアダプターのMAC(Media Access Control)アドレスを動的設定にする。省略可能 |
-StaticMacAddress | 追加する仮想ネットワークアダプターのMACアドレスを静的設定にする。省略可能 |
-ComputerName | リモートのHyper-Vホストの仮想マシンに仮想ネットワークアダプターを追加する場合、コンピュータ名を指定する。省略可能 |
必須オプションである「-VMName」で仮想マシン名を指定してAdd-VMNetworkAdapterコマンドレットを実行すると、指定した仮想マシンに仮想ネットワークアダプターが追加されます(画面1)。なお、Add-VMNetworkAdapterコマンドレットは管理者権限での実行が必要となります。
Add-VMNetworkAdapter -VMName Gen2-VM
標準のネットワークアダプターが指定した仮想マシンに追加され、仮想スイッチには接続されず、MACアドレスも動的設定と、GUIで追加した際と同じように、既定(デフォルト)で仮想ネットワークアダプターが追加されます。
今回仮想ネットワークアダプターを追加した「Gen2-VM」は第2世代仮想マシンであるため、電源状態にかかわらず、Add-VMNetworkAdapterコマンドレットを実行できます。
しかし、電源が入っている状態の第1世代仮想マシンを指定して実行した場合は、画面2のようにエラーが発生します。第2世代仮想マシンは問題なく実行できるのも画面2の通りです。
仮想ネットワークアダプターを追加すると同時に仮想スイッチへ接続したい場合は、「-SwitchName」オプションを使用します(画面3)。
Add-VMNetworkAdapter -VMName Gen2-VM -SwitchName "Internal vSwitch"
外部スイッチ、内部スイッチ、プライベートスイッチを問わず、指定した仮想スイッチに接続できます。
第1世代の仮想マシンにレガシーネットワークアダプターを追加したい場合には、「-IsLegacy」オプションで「$true」を設定してコマンドレットを実行します(画面4)。
Add-VMNetworkAdapter -IsLegacy $true -VMName Gen1-VM -SwitchName "Internal vSwitch"
なお、レガシーネットワークアダプターは第1世代の仮想マシンにのみ追加可能です。
既定ではMACアドレスは「動的設定」となっており、仮想マシンの電源投入時に決定されます。
管理者によって割り振られたMACアドレスを指定、すなわち「静的設定」で仮想ネットワークアダプターを追加する場合は、「-StaticMacAddress」オプションを使用します。オプションに続き、設定するMACアドレスを指定することで、指定したMACアドレスが設定された仮想ネットワークアダプターを接続できます(画面5)。
Add-VMNetworkAdapter -VMName Gen2-VM -SwitchName "Internal vSwitch" -StaticMacAddress 00-15-5D-14-DC-21
画面5では、電源停止状態の仮想マシンに仮想ネットワークアダプターを追加しています。MACアドレスは「00-00-00-00-00-00」ではなく、指定したMACアドレスが設定されているため、動的MACアドレスではなく、静的MACアドレスの仮想ネットワークアダプターであることが分かります。
「Hyper-Vマネージャー」管理ツールの仮想スイッチ設定で、「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」のチェックボックスをオンにする、もしくは本連載第127回の「New-VMSwitch」コマンドレットを「-AllowManagementOS」オプションを付与して実行することで、その仮想スイッチに接続される仮想ネットワークアダプターがホストOSに設定されます。
何かしらの理由により、ホストOSに2つ目以上の仮想ネットワークアダプターを追加したい場合は、「-ManagementOS」オプションを使用することで、ホストOSに仮想ネットワークアダプターを追加できます(画面6)。
Add-VMNetworkAdapter -ManagementOS -SwitchName "Internal vSwitch"
上記実行例では、仮想スイッチ「Internal vSwitch」に仮想ネットワークアダプターを追加しました。コマンドレット実行後にホストOSの仮想ネットワークアダプターが2つになり、OSレベルでもネットワークアダプターが追加されていることが画面6のPowerShellコンソールウィンドウの背後にある「ネットワーク接続」ウィンドウでも確認できます。
なお、追加された仮想ネットワークアダプターを削除する場合は、「Hyper-Vマネージャー」から削除することはできません。PowerShellコマンドレットを使用する必要があるので注意してください。
既定では標準のネットワークアダプターは「ネットワーク アダプター」、レガシーネットワークアダプターは「レガシ ネット ワークアダプター」という名前が付与されます。しかし、複数の仮想ネットワークアダプターが接続された仮想マシンでは、どの仮想ネットワークアダプターがどのような役割であり、どの仮想スイッチに接続されているかといった「仮想ネットワークアダプターの役割」を瞬時に見分けることは困難です。
仮想ネットワークアダプターに名前を付けられれば解決しますが、GUIツールの「Hyper-Vマネージャー」で作成すると一律で既定の名前が適用されてしまいます。
Add-VMNetworkAdapterコマンドレットの「-Name」オプションで、仮想ネットワークアダプターに規定値以外の名前を付与できます(画面7)。
Add-VMNetworkAdapter -VMName Gen2-VM -SwitchName "Internal vSwitch" -Name "Internal NIC"
この仮想ネットワークアダプターの名前は、「Hyper-Vマネージャー」でも参照可能です(画面8)。
そのため、仮想ネットワークアダプターを容易に識別できるようにするためにも、仮想ネットワークアダプター名は既定値を使用せず、ネーミングルールに従って個々に設定した方が運用管理上望ましいといえます。
株式会社ネットワールド所属。Microsoft MVP for Cloud and Datacenter Management(2012-2025)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.