本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Get-VMNetworkAdapterExtendedAcl」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Hyper-V」の仮想マシンに接続された仮想ネットワークアダプターの「拡張アクセス制御リスト」(Extended Access Control List:拡張ACL)の設定を取得する「Get-VMNetworkAdapterExtendedAcl」コマンドレットです。
Hyper-Vの仮想スイッチはさまざまなネットワーク機能を仮想マシンに提供しており、仮想マシンに対する通信を制御するACLによるアクセス制御にも対応しています。
本連載第144回の「Get-VMNetworkAdapterAcl」コマンドレットを解説した際、ACLにはレイヤー2(データリンク層)やレイヤー3(ネットワーク層)といったMAC(Media Access Control)アドレスベース、IP(Internet Protocol)アドレスベースでの指定が可能な「標準ACL」と、プロトコルや通信ポートといったレイヤー3、レイヤー4(トランスポート層)で制御可能な「拡張ACL」の2種類があると解説しました。
今回のGet-VMNetworkAdapterExtendedAclは、レイヤー3やレイヤー4での制御が可能な拡張ACLの設定を取得するコマンドレットです。
拡張ACLの設定対象は、標準ACLと同様、仮想マシンの仮想ネットワークアダプターであり、アクセス制御処理を行うのは仮想スイッチになります。
ACLの詳細については、別連載「今だからこそ学び直すHyper-V再入門」の第10回「いまさら聞けないHyper-Vネットワークの詳細(3):仮想スイッチのQoS機能/アクセス制御機能」を参照してください。
【注】Get-VMNetworkAdapterExtendedAclは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットになります。GUI(グラフィカルユーザーインタフェース)の「Windowsの機能の有効化」や「役割と機能の追加」からHyper-Vを有効化するか、PowerShellから「Enable-WindowsOptionalFeature」コマンドレットを使用して有効化します。
| オプション | 意味 |
|---|---|
| -VMName | 仮想マシン名を指定する。省略可能 |
| -VMNetworkAdapter | リソースオブジェクトとして仮想ネットワークアダプターを指定する。省略可能 |
| -VMNetworkAdapterName | 仮想ネットワークアダプター名を指定する。省略可能 |
| -ManagementOS | ホストOS用の仮想ネットワークアダプターの設定を取得したい場合に指定する。省略可能 |
| -ComputerName | リモートのHyper-Vホストの仮想ネットワークアダプターのACL情報を取得する場合にコンピュータ名を指定する。省略可能 |
Get-VMNetworkAdapterExtendedAclコマンドレットは必須オプションがないため、オプション指定なしで実行した場合は、Hyper-Vホスト上の全ての仮想ネットワークアダプターの拡張ACL設定を取得します(画面1)。なお、Get-VMNetworkAdapterExtendedAclコマンドレットは管理者権限での実行が必要となります。
Get-VMNetworkAdapterExtendedAcl
デフォルト(既定)ではリスト形式で出力されますが、「Format-Table」(「FT」と省略可能)コマンドレットをパイプ(|)でつなぐことでテーブル形式での出力が可能です(画面2)。
Get-VMNetworkAdapterExtendedAcl | FT
テーブル形式であれば、設定されている拡張ACLの要素(ローカルアドレス/通信ポート、リモートアドレス/通信ポート、方向、プロトコル、重みなど)が一覧で把握できます。
ただし、単純なテーブル形式表示では仮想マシン名や仮想ネットワークアダプター名が表示されないため、どのルールがどの仮想ネットワークアダプターに設定されているかが分かりません。
これを分かりやすく表示する方法が幾つかあります。最も単純な方法は、単一の仮想マシンの拡張ACLに表示を絞り込むことでしょう。仮想マシン名で絞り込む場合は「-VMName」オプションを使用し、仮想マシン名を指定します(画面3)。
Get-VMNetworkAdapterExtendedAcl -VMName Test-VM02 | FT
画面3では、仮想マシン「Test-VM02」には2つの仮想ネットワークアダプターが接続されていることが分かりますが、拡張ACLがどちらの仮想ネットワークアダプターに設定されているかが分かりません。さらに、仮想ネットワークアダプターで絞り込む場合は「-VMNetworkAdapterName」オプションを使用します(画面4)。
Get-VMNetworkAdapterExtendedAcl -VMName Test-VM02 -VMNetworkAdapterName "FrontendNIC" | FT
画面4では仮想ネットワークアダプター「FrontendNIC」を指定して実行したため、FrontendNICに設定された拡張ACLのみがフィルタリングされて表示されています。
仮想ネットワークアダプター単位で設定を一覧で取得できたため、可読性は向上しました。なお、拡張ACLは標準ACLと違い、ACLの適用順序を「Weight」値で指定できます。例えば、適用順に拡張ACLを並べたい場合には、「Sort-Object」コマンドレットを併用してオブジェクトを降順に並べ替えることで、ACLの可読性をさらに向上させることができます(画面5)。
Get-VMNetworkAdapterExtendedAcl -VMName Test-VM02 -VMNetworkAdapterName "FrontendNIC" | Sort-Object -Property Weight -Descending | FT
拡張ACLは「Weight」が大きい順に適用されるため、この表示形式であれば上から順に適用されることになります。
ホストOSが使用する仮想ネットワークアダプター、すなわちホストOSが仮想スイッチ経由で通信する際に使用される仮想ネットワークアダプターでも拡張ACLは設定可能です。これに設定された拡張ACLを取得するには、「-ManagementOS」オプションを使用します(画面6)。
Get-VMNetworkAdapterExtendedAcl -ManagementOS | FT
株式会社ネットワールド所属。Microsoft MVP for Cloud and Datacenter Management(2012-2026)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.