経緯
Windows で Hyper-V をインストール・有効化すると仮想ネットワークスイッチ「vEthernet (Default Switch)」が追加されます。
その関係で、 L2 レベルの通信 (e.x. ARPテーブル探索 や NAS の初期設定ツール) を行おうとすると、探索しに行くネットワークアダプタが実際に所属している LAN ではなくこの vEthernet の方に探索しに行ってしまうのか、「接続しているはずの機器が一切見付からない」という現象が発生することがありました。
これを抑制するため、 vEthernet を無効化したいです。一方で、 Windows10 のときはネットワークアダプタの一覧 (「コントロールパネル」→「ネットワークとインターネット」→「ネットワーク接続」) でアダプタの右クリックから無効化を手動でできたのですが、 Windows11 (いわゆるおま環かもしれませんが) ではこの手動無効化がグレーアウトしておりできない状態だったため、本件のように別途対応が必要になった次第です。
対処
最初は vEthernet の無効化のみを考えていたのですが、 Hyper-V 関係のサービスを停止しないと vEthernet の無効化ができなかったため、対処としては「 Hyper-V の関係サービスを停止しつつ vEthernet を無効化する」という形を取りました。
# Hyper-V 関係のサービスを停止する
Stop-Service -Name "vmms"
Stop-Service -Name "vmcompute"
Stop-Service -Name "HvHost"
Stop-Service -Name "WSLService"
# マッチするアダプタの個数分 はい/いいえ の確認が来る
get-netadapter|where-object {$_.interfacedescription -like "*hyper-v*"}|Disable-NetAdapter
実際は例外処理等諸々あるのでもっと長いですが、やりたいことのコアとしては上述のコマンドで一式となります。
参考
サービスの停止
- Stop-Service (Microsoft.PowerShell.Management) – PowerShell | Microsoft Learn
- 【Windows10】Hyper-Vを一時的に無効化する #VirtualBox – Qiita