PowerShellのGet-NetIPAddressは、Windowsに設定されているIPアドレスやプレフィックス長を確認するコマンドです。IPv4とIPv6を分けたり、特定のネットワークインターフェースに絞ったりして、設定確認や障害の切り分けに使えます。
ただし、デフォルトゲートウェイはGet-NetIPAddressのNextHopでは取得できません。アドレス情報と経路情報は別なので、ゲートウェイの確認にはGet-NetIPConfigurationやGet-NetRouteを使います。本記事では、この違いを踏まえて5つの利用例を紹介します。
実行前の確認と、取得できる情報
対象はWindowsのNetTCPIPモジュールが利用できるPowerShell環境です。以下はローカルPCの情報を読み取る例で、IPアドレス、DNS、ルートなどの設定を変更するコマンドは含みません。まず必要なコマンドが見つかるか確認してください。
Get-Command Get-NetIPAddress, Get-NetIPConfiguration, Get-NetRoute, Get-NetIPInterface
コマンドが認識されない場合は、Windows側のPowerShellを開いているか、対象環境でモジュールが利用できるかを確認します。PowerShellがあるだけで、すべてのOSで同じWindows用コマンドを使えるわけではありません。アクセス拒否の場合は、組織の権限・運用ルールに従って管理者に確認してください。
IPAddress:各アドレスの値。1つのインターフェースに複数行あることがあります。AddressFamily:IPv4かIPv6かを区別します。InterfaceIndex・InterfaceAlias:そのアドレスが属するインターフェースの番号と名前です。PrefixLength:ネットワーク部分のビット数です。IPv4の24は/24、サブネットマスクでは255.255.255.0に相当します。AddressState:アドレスの状態です。たとえばPreferredは利用可能、Tentativeは重複検出中、Duplicateは重複が検出された状態を示します。
パラメーターと状態の定義は、Microsoft LearnのGet-NetIPAddressリファレンスを参照してください。Preferredであっても、インターネット接続やDNSの正常性まで保証するものではありません。
具体的な利用例
1. IPアドレス情報を一覧表示する
Get-NetIPAddress
まずは絞り込まずにアドレス情報を確認します。標準では既定のネットワークコンパートメントが対象です。IPv4・IPv6やループバックなどが含まれるため、表示された先頭のアドレスをそのまま「このPCの通信に使うIP」と判断しないでください。
見比べやすくするには、必要な列を表で表示します。
Get-NetIPAddress |
Sort-Object InterfaceIndex, AddressFamily, IPAddress |
Format-Table InterfaceIndex, InterfaceAlias, AddressFamily, IPAddress, PrefixLength, AddressState -AutoSize
利用シーン:複数のアダプターやVPNがあるPCで、どのインターフェースにどのアドレスが設定されているかを整理したいときに使います。Format-Tableは画面表示用なので、取得結果を後の処理に渡す場合は、整形する前のオブジェクトを使います。
2. IPv4だけ、またはIPv6だけを取得する
Get-NetIPAddress -AddressFamily IPv4 |
Select-Object InterfaceIndex, InterfaceAlias, IPAddress, PrefixLength, AddressState
-AddressFamily IPv4でIPv4に絞ります。IPv6を調べる場合は次のように指定します。
Get-NetIPAddress -AddressFamily IPv6 |
Select-Object InterfaceIndex, InterfaceAlias, IPAddress, PrefixLength, AddressState
利用シーン:IPv4の設定を点検しているときにIPv6を混在させずに確認したい場合や、IPv6だけの状態を調べたい場合に使います。この指定だけでは、特定のアダプターや通信可能なアドレス1件に絞られるわけではありません。必要なら次の例のインターフェース指定を組み合わせてください。
3. 特定のネットワークインターフェースを指定する
インターフェース名は、OSの表示言語、機器、ユーザーによる名前変更などで異なります。Wi-Fiという名前が必ず存在するわけではないので、先に実際の名前と番号を確認します。
Get-NetIPConfiguration -All |
Select-Object InterfaceIndex, InterfaceAlias
-Allを付けると、仮想・ループバック・切断状態のインターフェースも確認対象になります。付けない場合は、標準で接続中の非仮想インターフェースが対象です。詳細はGet-NetIPConfigurationの公式説明を参照してください。
実際の名前がWi-Fiだった場合は、次のように取得できます。環境に合わせて名前を置き換えてください。
Get-NetIPAddress -InterfaceAlias 'Wi-Fi' |
Select-Object InterfaceIndex, InterfaceAlias, AddressFamily, IPAddress, PrefixLength
名前の代わりに番号で指定することもできます。次の12は例なので、一覧で確認した対象のInterfaceIndexに置き換えます。
Get-NetIPAddress -InterfaceIndex 12 -AddressFamily IPv4 |
Select-Object InterfaceIndex, InterfaceAlias, IPAddress, PrefixLength, AddressState
利用シーン:Wi-Fiと有線LANを区別したい場合や、VPN以外のアダプターを点検したい場合に便利です。番号は別PCや構成変更後も同じとは限らないため、調査時点の一覧を使ってください。
4. アドレスとプレフィックス長を組で確認する
プレフィックス長だけを取り出すと、複数のアドレスがある場合に対応関係が分かりません。アドレスファミリーと対象インターフェースを指定し、IPAddressとPrefixLengthを同じ行に残します。ここでも12は実際の番号に置き換えてください。
Get-NetIPAddress -InterfaceIndex 12 -AddressFamily IPv4 |
Select-Object InterfaceIndex, InterfaceAlias, IPAddress, PrefixLength
たとえばIPAddressが192.168.1.20でPrefixLengthが24なら、192.168.1.20/24という設定です。この数値は説明用で、実際の実行結果ではありません。
IPv6についても、-AddressFamily IPv6に置き換えてアドレスごとに確認します。PrefixLengthの数値そのものはドット区切りのサブネットマスクではなく、IPv6の長さをIPv4のマスクとして扱うこともできません。IPv4に絞っても複数件返る可能性があるため、安易に先頭1件だけを採用しないことが重要です。
利用シーン:設計書のアドレス・プレフィックス長と現在の設定を照合したいときに使います。表示結果を確認するだけで、サブネット設定は変更されません。
5. デフォルトゲートウェイを別のコマンドで確認する
Get-NetIPAddressはアドレスの情報を返し、NextHopはルートの情報です。Get-NetIPAddressの結果からNextHopを取り出そうとしても、ゲートウェイは確認できません。まず、対象インターフェースの構成全体を見るには次のコマンドを使います。12は実際の番号に置き換えてください。
Get-NetIPConfiguration -InterfaceIndex 12
ゲートウェイを経路情報として明示的に確認するには、デフォルトルートの宛先プレフィックスで絞ります。IPv4は0.0.0.0/0、IPv6は::/0です。次の例では、現在の構成を確認するためActiveStoreを指定しています。
# IPv4のデフォルトルート
Get-NetRoute -AddressFamily IPv4 -DestinationPrefix '0.0.0.0/0' -PolicyStore ActiveStore |
Select-Object InterfaceIndex, InterfaceAlias, DestinationPrefix, NextHop, RouteMetric, InterfaceMetric
# IPv6のデフォルトルート
Get-NetRoute -AddressFamily IPv6 -DestinationPrefix '::/0' -PolicyStore ActiveStore |
Select-Object InterfaceIndex, InterfaceAlias, DestinationPrefix, NextHop, RouteMetric, InterfaceMetric
通常、該当ルートのNextHopがデフォルトゲートウェイです。NextHopがIPv4の0.0.0.0またはIPv6の::ならオンリンクの経路を表すため、その値をルーターのIPアドレスとは扱いません。これらの定義はMicrosoft LearnのGet-NetRouteリファレンスで確認できます。
上のルート照会にはインターフェースの指定がないため、Wi-Fi・有線LAN・VPNなどの候補が複数表示される場合があります。特定のインターフェースだけを調べる場合は、各Get-NetRouteに-InterfaceIndex 12のような指定を追加してください。
複数の候補があるときは、一覧の先頭やRouteMetricだけで使用経路を断定しないでください。宛先に一致する長いプレフィックスが優先され、同じプレフィックス長の候補ではルートとインターフェースのメトリックの合計が比較に使われます。デフォルトルートより具体的な宛先の経路があれば、そちらが使われる場合があります。根拠は経路のプレフィックス長とメトリックの説明およびGet-NetIPInterfaceのInterfaceMetricの説明を参照してください。
利用シーン:アドレスは設定されているのに別ネットワークへの通信ができない場合や、VPN接続前後の経路を調べたい場合に使います。対象のデフォルトルートが存在しなければ、その照会では結果が得られません。IPv6だけ、別のインターフェース、特定宛先へのルートなどもあり得るため、それだけで通信不可とは判断しないでください。
結果を読むときの注意点
- アドレス情報が複数行あること自体は異常ではありません。インターフェース・アドレスファミリー・アドレスの組み合わせで確認します。
- 名前や番号を指定して結果が見つからない場合は、まず例3の一覧で指定値を確認します。アドレスが未設定のインターフェースでは、アドレス情報が得られない場合もあります。
- これらは設定の照会であり、接続先への到達性を検査するコマンドではありません。取得できたことと、通信が成功することは別です。
- 社内アドレスやアダプター名が含まれる結果を、公開フォーラムなどへそのまま貼り付けないでください。共有先に必要な情報だけを残します。
まとめ
Get-NetIPAddressでは、まず一覧を確認し、-AddressFamilyと-InterfaceAliasまたは-InterfaceIndexで対象を絞ります。プレフィックス長はアドレスと組で読み取り、デフォルトゲートウェイはGet-NetIPConfigurationやデフォルトルートのGet-NetRouteで確認するのが基本です。複数のインターフェースやアドレスを前提にすると、対象を取り違えずに調査できます。
参考資料
- Microsoft Learn:Get-NetIPAddress
- Microsoft Learn:Get-NetIPConfiguration
- Microsoft Learn:Get-NetRoute
- Microsoft Learn:Get-NetIPInterface
- Microsoft Learn:MSFT_NetIPAddressクラス
- Microsoft Learn:経路のMetricとプレフィックス長
Microsoftの公式資料を2026年10月20日に確認し、パラメーター、取得対象、アドレス情報と経路情報の区別を点検しています。本記事のコマンドはWindows実機での実行確認を行っていないため、実際の表示内容や利用可否は対象環境で確認してください。


コメント