【 Set-VMSwitch 】コマンドレット――Hyper-Vの仮想スイッチの設定を変更するWindows PowerShell基本Tips(128)

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

» 2025年02月28日 05時00分 公開
[後藤諭史@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windows PowerShell基本Tips」のインデックス

連載目次

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

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

 Hyper-Vで仮想マシンにネットワークサービスを提供する仮想スイッチですが、新規作成後に何かしら設定を変更したい場合もあるでしょう。手早く変更したい場合にはGUI(グラフィカルユーザーインタフェース)の管理ツールである「Hyper-Vマネージャー」を使用するのも選択肢の一つですが、複数台のHyper-Vホストの仮想スイッチを一斉に設定変更したい場合は、やはりPowerShellの出番といえます。

 「Set-VMSwitch」は仮想スイッチの設定を変更するコマンドレットです。仮想スイッチを新規作成した際に指定した設定を変更することはもちろん、新作成時には設定できない項目を改めて設定することも可能です。

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


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

Set-VMSwitch [オプション]


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

オプション 意味
-ComputerName リモートのHyper-Vホストの仮想スイッチを設定変更する場合にコンピュータ名を指定する。省略可能
-Name 設定変更する仮想スイッチの名前を指定する
-NetAdapterName 外部ネットワーク接続に変更する際、外部ネットワーク接続用の物理ネットワークアダプター名を指定する。省略可能
-NetAdapterInterfaceDescription 外部ネットワーク接続に変更する際、外部ネットワーク接続用の物理ネットワークアダプターのデバイス名を指定する。省略可能
-SwitchType 外部ネットワーク接続以外のネットワーク接続に設定を変更する際、タイプ(Internal〈内部〉/Private〈プライベート〉)を指定する。省略可能
-AllowManagementOS 管理パーティションとネットワークアダプターを共有するかどうかを指定する。省略可能
-DefaultFlowMinimumBandwidthAbsolute 最小帯域幅に関する絶対値の既定値を設定する。省略可能
-DefaultFlowMinimumBandwidthWeight 最小帯域幅に関する重み付けの既定値を設定する。省略可能

仮想スイッチのスイッチタイプを変更する

 仮想スイッチを新規作成する際には、接続するネットワークに応じて「外部ネットワーク接続」「内部ネットワーク接続」「プライベートネットワーク接続」の3種類から選択します。仮想スイッチ作成後に接続先を変更する場合に、Set-VMSwitchコマンドレットを使用します。

 例えば、外部ネットワーク接続仮想スイッチとして作成した仮想スイッチを、内部ネットワーク接続仮想スイッチに変更したい場合は、「-SwitchType」オプションを使用します(画面1)。なお、Set-VMSwitchコマンドレットは管理者権限での実行が必要となります。

コマンドレット実行例

Set-VMSwitch -Name "External vSwitch" -SwitchType Internal

ALT 画面1 外部ネットワーク接続用仮想スイッチを内部ネットワーク接続用仮想スイッチに設定変更した

 逆に、内部ネットワーク接続用スイッチを外部ネットワーク接続用スイッチに設定変更することも可能です。その場合は「-NetAdapterName」オプションもしくは「-NetAdapterInterfaceDescription」オプションを併用して、物理ネットワークアダプターを指定します(画面2)。

 なお、本稿執筆時点(2025年2月末)では-SwitchTypeオプションで「External」を選択できますが、こちらは使用せずに物理ネットワークアダプターを指定するオプションを使用してください。-SwitchType」オプションを設定してしまうと、物理ネットワークアダプターを指定するオプションが使用できなくなります。

コマンドレット実行例

Set-VMSwitch -Name "External vSwitch" -NetAdapterName "イーサネット 4"

ALT 画面2 -NetAdapterNameオプションで物理ネットワークアダプターを指定し、外部ネットワーク接続用仮想スイッチへ変更した

 筆者の環境では、画面2のように内部ネットワーク接続仮想スイッチを外部ネットワーク接続スイッチに変更し、かつ「-AllowManagementOS」オプションで「$false」(共有しない)を設定しなかった場合、ネットワークアダプター共有のための仮想ネットワークアダプターが複数設定されてしまいました。

 複数設定されてしまったネットワークアダプター共有のための仮想ネットワークアダプターを削除するには、次の項で解説する管理パーティションとネットワークアダプターの共有設定を実施します。


管理パーティションとネットワークアダプターの共有設定を変更する

 外部ネットワーク接続仮想スイッチを作成した際には、管理パーティション(ホストOS)と仮想スイッチを作成した物理ネットワークアダプターを共有するかどうかを設定できます。既定値では「共有する」となっているため、共有するための仮想ネットワークアダプターがホストOS上に作成されます。

 この共有を解除するには、「-AllowManagementOS」オプションで「$false」(共有しない)を設定します(画面3)。

コマンドレット実行例

Set-VMSwitch -Name "External vSwitch" -AllowManagementOS $false

ALT 画面3 -AllowManagementOSオプションでネットワークアダプターの共有を解除した

 逆に、共有していないネットワークアダプターを管理パーティションと共有したい場合には-AllowManagementOSオプションで「$true」(共有する)を設定します(画面4)。

コマンドレット実行例

Set-VMSwitch -Name "External vSwitch" -AllowManagementOS $true

ALT 画面4 -AllowManagementOSオプションでネットワークアダプターの共有を設定した

仮想スイッチの最小帯域幅に関するデフォルトフローの設定値を変更する

 前回紹介した「New-VMSwitch」コマンドレットで仮想スイッチを新規作成する際、「-MinimumBandwidthMode」オプションを使用することで最小帯域幅の設定を絶対値指定か重み付け指定かのどちらかを選択可能であることを説明しました。

 この最小帯域幅は、仮想マシンの各ネットワークアダプターで有効化および値を設定することになりますが、「デフォルトフロー(default flow)」と呼ばれる特別なグループに割り当てる最小帯域幅は仮想スイッチで設定された「DefaultFlowMinimumBandwidthAbsolute」もしくは「DefaultFlowMinimumBandwidthWeight」が適用されます。

 これらの値の既定値は「Absolute」であれば物理ネットワークアダプターの帯域に対して自動的に10%の値、例えば10Gbpsのネットワークアダプターであれば「1000000000」(1Gbps)、2.5Gbpsのネットワークアダプターであれば「250000000」(250Mbps)に設定され、「Weight」であれば「1」が設定されます。

 この値を明示的に変更したい場合は、仮想スイッチの設定が「Absolute」であれば「-DefaultFlowMinimumBandwidthAbsolute」オプション(画面5)を、仮想スイッチの設定が「Weight」であれば「-DefaultFlowMinimumBandwidthWeight」オプション(画面6)を使用します。

コマンドレット実行例

Set-VMSwitch -Name "External vSwitch" -DefaultFlowMinimumBandwidthAbsolute 500000000

ALT 画面5 -DefaultFlowMinimumBandwidthAbsoluteオプションで「デフォルトフロー」に対する最小帯域幅の絶対値を500Mbpsに変更した

コマンドレット実行例

Set-VMSwitch -Name "External vSwitch_02" -DefaultFlowMinimumBandwidthWeight 5

ALT 画面6 -DefaultFlowMinimumBandwidthWeightオプションで「デフォルトフロー」に対する最小帯域幅の重み付けを「5」に変更した

筆者紹介

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。