Windows OSの管理において、ネットワーク設定の確認は避けて通れない基本的な作業の一つです。
かつてはコマンドプロンプトで「ipconfig」を実行するのが主流でしたが、現代のシステム管理においてはPowerShellを用いた高度な情報取得が推奨されています。
PowerShellを活用することで、単にIPアドレスを表示するだけでなく、特定の条件に基づいた抽出や、他システムとの連携が容易になります。
本記事では、PowerShellを使用してIPアドレスを効率的に確認するための最適なコマンドや、実務で役立つフィルタリング手法について詳しく紹介します。
PowerShellでネットワーク情報を取得するメリット
PowerShellはオブジェクト指向のシェルであるため、コマンドの実行結果が「単なるテキスト」ではなく「構造化されたデータ」として返されます。
この性質により、特定の項目だけを抜き出したり、計算に利用したりといった処理が非常にスムーズに行えます。
例えば、複数のネットワークアダプターの中から「有効なIPv4アドレスだけ」を自動的に判別し、ログファイルに記録するといった自動化も数行のコードで実現可能です。
手動での確認作業を減らし、作業の正確性とスピードを向上させられる点が、PowerShellを利用する最大の利点と言えるでしょう。
ipconfigコマンドとPowerShellネイティブコマンドの違い
Windowsユーザーにとって馴染み深い「ipconfig」コマンドは、PowerShell上でもそのまま実行することが可能です。
しかし、ipconfigはあくまでテキストを出力するだけの古いツールであり、その結果を再利用するには複雑な文字列解析が必要となります。
一方で、PowerShellネイティブのコマンドである「Get-NetIPAddress」などは、各情報をプロパティとして保持しています。
これにより、「IPAddress」や「InterfaceAlias」といった特定の要素をダイレクトに参照できるようになります。
まずは、従来の手法と現代的な手法の違いを表で整理してみましょう。
| 機能・特徴 | ipconfig (従来) | Get-NetIPAddress (PowerShell) |
|---|---|---|
| 出力形式 | テキスト(文字列) | オブジェクト(データ) |
| フィルタリング | 困難(findstrなどが必要) | 容易(Where-Objectで可能) |
| 他コマンドへの連携 | 再処理が必要 | パイプラインで直結可能 |
| 取得情報の詳細度 | 基本情報のみ | 詳細なステータスまで取得可能 |
Get-NetIPAddressコマンドの基本操作
PowerShellでIPアドレスを確認するための最も標準的なコマンドは、Get-NetIPAddressです。
このコマンドを実行すると、システム内のすべてのインターフェースに関する詳細なIPアドレス情報がリストアップされます。
まずは、最もシンプルな実行方法とその結果を確認してみましょう。
# すべてのIPアドレス情報を取得する
Get-NetIPAddress
IPAddress : 192.168.1.15
InterfaceIndex : 12
InterfaceAlias : Wi-Fi
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Dhcp
SuffixOrigin : Dhcp
AddressState : Preferred
ValidLifetime : 23:54:12
PreferredLifetime : 23:54:12
SkipAsSource : False
PolicyStore : ActiveStore
IPv4アドレスのみを抽出する方法
デフォルトの状態ではIPv6アドレスも同時に表示されるため、情報量が多くなりがちです。
多くの環境ではIPv4アドレスのみが必要とされるため、「AddressFamily」パラメータを使用してフィルタリングを行うのが一般的です。
以下のコマンドを使用することで、IPv4の情報だけに絞り込むことができます。
# IPv4アドレスのみを表示する
Get-NetIPAddress -AddressFamily IPv4
このパラメータを指定するだけで、不要なIPv6情報が排除され、視認性が大幅に向上します。
特定のインターフェースに絞り込んで表示する
サーバーや開発用PCでは、仮想ネットワークアダプターなどが多数存在し、どれが物理的な接続なのか判別しにくいことがあります。
そのような場合は、-InterfaceAliasパラメータを使用して、特定のアダプター名(例:Wi-FiやEthernet)を指定します。
# Wi-FiアダプターのIPアドレス情報のみを取得
Get-NetIPAddress -InterfaceAlias "Wi-Fi"
もし正確な名称がわからない場合は、ワイルドカード(*)を利用することも可能です。
# "Eth"から始まるすべてのアダプターを表示
Get-NetIPAddress -InterfaceAlias "Eth*"
Get-NetIPConfigurationによる直感的な確認
Get-NetIPAddressは詳細な情報を得られますが、出力項目が多すぎて少し見づらいと感じることもあるかもしれません。
より「ipconfig」に近い感覚で、なおかつオブジェクトとして情報を扱いたい場合は、Get-NetIPConfigurationコマンドが非常に便利です。
このコマンドは、IPアドレスに加えてデフォルトゲートウェイやDNSサーバーの情報もまとめて表示してくれます。
# ネットワーク構成の概要を確認する
Get-NetIPConfiguration
InterfaceAlias : Wi-Fi
InterfaceIndex : 12
InterfaceDescription : Intel(R) Wi-Fi 6 AX201 160MHz
NetProfile.Name : MyHomeNetwork
IPv4Address : 192.168.1.15
IPv6DefaultGateway :
IPv4DefaultGateway : 192.168.1.1
DNSServer : 192.168.1.1
このコマンドはエイリアスとしてgipが定義されており、「gip」と入力するだけで素早くネットワーク情報を呼び出すことができます。
応用編:IPアドレス情報の高度なフィルタリングと加工
PowerShellの真骨頂は、取得したデータを自由自在に加工できる点にあります。
ここでは、実務でよく使われる高度なフィルタリングや整形の手法について解説します。
出力結果を必要な項目だけに絞り込む
コマンドの出力結果には多くのプロパティが含まれていますが、画面に表示したいのは「アダプター名」と「IPアドレス」だけで十分な場合が多いでしょう。
そのような時は、Select-Objectコマンドを組み合わせて、表示項目をカスタマイズします。
# アダプター名とIPアドレスのみを表示
Get-NetIPAddress -AddressFamily IPv4 | Select-Object InterfaceAlias, IPAddress
このワンライナーを使用することで、余計な情報を削ぎ落としたシンプルなリストが得られます。
AddressStateで有効な接続のみを確認する
無効化されているアダプターや、IPアドレスが正しく割り当てられていないインターフェースを除外したい場合があります。
AddressStateプロパティを確認し、値が「Preferred」であるものだけを抽出することで、実際に通信可能なIPアドレスのみを特定できます。
# 有効なIPv4アドレスのみを抽出
Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.AddressState -eq "Preferred" }
実行結果を外部ファイルへ出力する
取得したネットワーク情報をレポートとして保存したり、他の部署へ共有したりする際には、ファイル出力機能が役立ちます。
CSV形式で保存すれば、Excelで簡単に閲覧や編集が行えます。
# ネットワーク情報をCSVファイルとして保存
Get-NetIPAddress -AddressFamily IPv4 | Select-Object InterfaceAlias, IPAddress, PrefixLength | Export-Csv -Path "C:\temp\NetworkInfo.csv" -NoTypeInformation -Encoding UTF8
JSON形式が必要な場合は、ConvertTo-Jsonを使用することで、モダンなアプリケーションと親和性の高いデータ形式に変換できます。
リモートPCのIPアドレスをPowerShellで確認する方法
管理下のネットワーク内にある別マシンのIPアドレスを確認したい場合、わざわざ現地へ行く必要はありません。
Invoke-Commandを使用すれば、リモートのPC上でPowerShellコマンドを実行し、その結果を手元の画面に表示させることが可能です。
# リモートPC(例: Server01)のIPアドレスを確認する
Invoke-Command -ComputerName "Server01" -ScriptBlock { Get-NetIPAddress -AddressFamily IPv4 }
この手法を利用するには、接続先でWinRM(Windows Remote Management)が有効になっている必要がありますが、大規模な環境の運用管理では不可欠なテクニックです。
トラブルシューティングに役立つテクニック
IPアドレスを確認した際、もし「169.254.x.x」というアドレスが表示された場合は、DHCPサーバーから正しくアドレスが取得できていない(APIPA)ことを示しています。
このようなトラブル時には、IPアドレスの確認だけでなく、一度アドレスを解放して再取得する操作が必要になります。
PowerShellでは以下のコマンドを組み合わせて実行することで、ネットワークアダプターの再起動や設定の更新が可能です。
# 指定したアダプターを一度無効にしてから有効にする
Restart-NetAdapter -Name "Wi-Fi"
また、特定のインターフェースの統計情報を確認したい場合は、Get-NetAdapterStatisticsを併用すると、パケットの送受信状況まで把握できるため、原因の切り分けに役立ちます。
まとめ
PowerShellを使用したIPアドレスの確認は、従来のipconfigに比べて柔軟性が高く、効率的なシステム管理を実現します。
Get-NetIPAddressやGet-NetIPConfigurationといったコマンドを使い分け、必要に応じてWhere-ObjectやSelect-Objectによるフィルタリングを組み合わせることが重要です。
最後に、本記事で紹介した主要なコマンドとその用途を振り返ります。
- Get-NetIPAddress:すべてのIPアドレスの詳細情報を取得する。
- -AddressFamily IPv4:IPv4アドレスのみに絞り込むための必須パラメータ。
- Get-NetIPConfiguration:ゲートウェイやDNSを含むネットワーク構成を簡潔に表示する。
- Select-Object:表示する項目をカスタマイズして視認性を高める。
- Invoke-Command:遠隔地のPCのネットワーク情報を取得する。
これらのコマンドを習得し、日々の業務や自動化スクリプトに組み込むことで、Windows環境におけるネットワーク管理のレベルを一段階引き上げることができるでしょう。
PowerShellの持つ強力なオブジェクト操作機能をフルに活用し、正確で迅速な情報収集を心がけてください。
