本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Remove-VMNetworkAdapterAcl」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Hyper-V」の仮想マシンに接続された仮想ネットワークアダプターの「アクセス制御リスト」(Access Control List:ACL)を削除する「Remove-VMNetworkAdapterAcl」コマンドレットです。
Hyper-Vの仮想スイッチはさまざまなネットワーク機能を仮想マシンに提供しており、仮想マシンに対する通信を制御するACLによるアクセス制御にも対応しています。
ACLを追加すると仮想マシンの通信をフィルタリングできますが、役目を終えたACLは削除されるべきです。利用されないACLの放置は無用な障害を招く恐れもあるため、メンテナンス作業で削除する必要があります。
「Remove-VMNetworkAdapterAcl」は、仮想マシンのネットワークアダプターに対して設定されたACLを削除するコマンドレットです。
ACLには「標準ACL」と「拡張ACL」の2種類があることは本連載144回の「Get-VMNetworkAdapterAcl」コマンドレットでも触れましたが、Remove-VMNetworkAdapterAclは標準ACLを削除するためのコマンドレットになります。
【注】Remove-VMNetworkAdapterAclコマンドレットは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットになります。GUI(グラフィカルユーザーインタフェース)の「Windowsの機能の有効化」や「役割と機能の追加」からHyper-Vを有効化するか、PowerShellから「Enable-WindowsOptionalFeature」コマンドレットを使用して有効化します。
| オプション | 意味 |
|---|---|
| -VMName | 仮想マシン名を指定する |
| -VMNetworkAdapter | リソースオブジェクトとして仮想ネットワークアダプターを指定する。省略可能 |
| -VMNetworkAdapterName | 仮想ネットワークアダプター名を指定する。省略可能 |
| -ManagementOS | ホストOS用の仮想ネットワークアダプターのACLを削除したい場合に指定する。省略可能 |
| -Action | ACLのアクション(Allow/Deny/Meter)を指定する |
| -Direction | ACLの方向(Inbound/Outbound/Both)を指定する |
| -LocalIPAddress | ローカルコンピュータのIPアドレスを指定する。省略可能 |
| -LocalMacAddress | ローカルコンピュータのMAC(Media Access Control)アドレスを指定する。省略可能 |
| -RemoteIPAddress | リモートコンピュータのIPアドレスを指定する。省略可能 |
| -RemoteMacAddress | リモートコンピュータのMACアドレスを指定する。省略可能 |
| -ComputerName | リモートのHyper-Vホストの仮想ネットワークアダプターのACLを削除する場合にコンピュータ名を指定する。省略可能 |
必須オプションは「-VMName」オプションと「-Action」オプション、それに「-Direction」オプションですが、Remove-VMNetworkAdapterAclコマンドレットは削除するACLをアドレスも含めて指定する必要があるため、現在設定されているACLを参照してアドレスなどを指定して実行します(画面1)。
Remove-VMNetworkAdapterAcl -VMName Test-VM01 -Action Deny -Direction Both -RemoteIPAddress 192.168.200.103
画面1の実行例では、「-Direction」オプションで「Both」を指定しているため、「Outbound」と「Inbound」の両方のACLが削除されています。例えば、「Outbound」のみを削除したい場合は、「-Direction」オプションで「Outbound」を指定します(画面2)。
Remove-VMNetworkAdapterAcl -VMName Test-VM01 -Action Deny -Direction Outbound -RemoteIPAddress 192.168.200.102
リモートアドレス「192.168.200.102」のACLが「Remove-VMNetworkAdapterAcl」コマンドレット実行後に「Outbound」のACLだけが削除されていることが分かります。
ただし、リモートアドレスとして「192.168.200.0/24」のようにネットワークアドレスが指定されているACLに対し、そのネットワーク範囲の一部をホストアドレスとして指定して削除する、というようなことはできません(画面3)。コマンドレット自体は正常終了しますが、設定されているACLは変更されません。
前項のように、削除するACLはアドレスや方向を含め一致させる必要があります。複数のACLが仮想ネットワークアダプターに設定されている場合は、個々のACLを指定して削除することも可能ですが、本連載144回の「Get-VMNetworkAdapterAcl」コマンドレットでACLを取得し、パイプ(|)でRemove-VMNetworkAdapterAclコマンドレットにつなぐことで、設定されているACLを一括で削除できます(画面4)。
Get-VMNetworkAdapterAcl -VMName Test-VM01 | Remove-VMNetworkAdapterAcl
ホストOSが使用する仮想ネットワークアダプター、すなわちホストOSが仮想スイッチ経由で通信する際に使用される仮想ネットワークアダプターのACLを削除する場合は、「-ManagementOS」オプションを使用します(画面5)。
Remove-VMNetworkAdapterAcl -ManagementOS -Action Deny -Direction Both -RemoteIPAddress 0.0.0.0/0
株式会社ネットワールド所属。Microsoft MVP for Cloud and Datacenter Management(2012-2026)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.