ネットワークトラブルの原因を探ったり、通信経路を確認したりする際に欠かせないのが「ルーティングテーブル」の確認です。Windows環境でルーティングテーブルを素早く把握したい場合、PowerShellのコマンド「Get-NetRoute」が非常に便利です。この記事では、PowerShell初心者の方でもわかりやすく、「Get-NetRoute」コマンドの基本から応用的な使い方まで、丁寧に解説していきます。ITエンジニアやネットワーク管理者の方はもちろん、学習中の方にも役立つ内容となっています。
Get-NetRouteとは?
「Get-NetRoute」は、Windows PowerShellで利用できるコマンドレットの一つで、コンピュータに設定されているルーティング情報(経路情報)を表示するために使用します。ルーティング情報とは、どのネットワーク宛の通信がどのインターフェースを通るかといった、ネットワークの経路選択に関する設定のことです。
従来、ルーティングテーブルの確認にはコマンドプロンプトで route print
を使うことが多かったのですが、PowerShellを使えば、よりオブジェクト指向的に、フィルタや整形出力が簡単にできるのが利点です。
基本的な使い方
まずは基本的な「Get-NetRoute」コマンドの使い方を紹介します。
Get-NetRoute
このコマンドを入力すると、現在のPCに設定されている全てのルーティング情報が一覧で表示されます。表示される情報には以下のようなものがあります。
- DestinationPrefix:通信の宛先プレフィックス(例:0.0.0.0/0)
- NextHop:次にデータが向かうルーターのIPアドレス
- InterfaceAlias:利用するインターフェース(ネットワークアダプター名)
- RouteMetric:経路の優先度(数値が小さいほど優先)
この出力結果は非常に詳細なので、必要な情報だけを抽出したい場合はフィルタや整形表示が便利です。
特定のルートを絞り込んで表示する
すべてのルートを確認するのではなく、特定の宛先やインターフェースに絞って情報を取得したい場合は、Where-Object
を使ったフィルタリングが便利です。
宛先が「0.0.0.0/0」(デフォルトゲートウェイ)のルートのみ表示
Get-NetRoute | Where-Object { $_.DestinationPrefix -eq "0.0.0.0/0" }
特定のインターフェース名で絞り込み
Get-NetRoute | Where-Object { $_.InterfaceAlias -eq "Ethernet" }
このように、条件を指定することで欲しい情報だけを抜き出すことができます。
フォーマットを整えて見やすく表示する
PowerShellの強みは、オブジェクトベースで出力される情報を柔軟に整形できることです。
表形式で出力(Format-Table)
Get-NetRoute | Format-Table DestinationPrefix, NextHop, InterfaceAlias, RouteMetric -AutoSize
必要な列だけを選んで表示(Select-Object)
Get-NetRoute | Select-Object DestinationPrefix, NextHop, InterfaceAlias, RouteMetric
Format-Table
は目で見て確認したい時に便利で、Select-Object
は他のコマンドに渡す際に使います。
IPv4のみ、またはIPv6のみを表示したい場合
PowerShellでは、ルートのアドレスタイプによって表示を分けることも可能です。
IPv4ルートのみ表示
Get-NetRoute | Where-Object { $_.AddressFamily -eq "IPv4" }
IPv6ルートのみ表示
Get-NetRoute | Where-Object { $_.AddressFamily -eq "IPv6" }
ネットワークの構成によってはIPv6が不要なケースも多いので、IPv4だけを確認したいときに役立ちます。
永続ルートや一時ルートの判別
Windowsでは、再起動後も残る「永続ルート」と、再起動すると消える「一時ルート」があります。Get-NetRoute
でその違いを確認するには、PolicyStore
プロパティを見ましょう。
Get-NetRoute | Select-Object DestinationPrefix, NextHop, PolicyStore
- ActiveStore:一時的に設定されたルート
- PersistentStore:永続的に設定されたルート
この情報は、ルートを追加・削除するときに間違いを防ぐためにも非常に重要です。
管理者権限での実行が必要なケース
Get-NetRoute
コマンド自体は通常のユーザー権限でも実行できますが、ルートの追加や削除を行う場合は、管理者権限のPowerShellが必要になります。確認だけなら問題ありませんが、後続で New-NetRoute
や Remove-NetRoute
を使いたい場合は、**「管理者として実行」**しておきましょう。
よくある用途と活用例
ネットワークに接続できない時の原因調査
通信できない場合に、「NextHop」が正しいか、「RouteMetric」が想定通りかを確認します。
VPN接続後の通信経路確認
VPNに接続した後、「Get-NetRoute」でVPN側にルートが切り替わっているか確認できます。
静的ルートの管理
社内ネットワークで特定セグメントへの通信に固定ルートを使っている場合など、ルートの確認・管理が重要になります。
コマンドプロンプトとの比較:route printとの違い
従来よく使われていた route print
との違いは以下の通りです。
項目 | route print | Get-NetRoute |
---|---|---|
実行環境 | コマンドプロンプト | PowerShell |
出力形式 | テキストベース | オブジェクトベース |
フィルタ処理 | 不可 | 柔軟な絞り込み可能 |
整形表示 | 不可 | Format-TableやCSV出力が可能 |
PowerShellに慣れていくと、圧倒的に「Get-NetRoute」の方が便利に感じられるようになります。
まとめ
「Get-NetRoute」は、Windowsのルーティング情報を確認するための強力なツールです。単純な一覧表示だけでなく、フィルタリング、整形出力、IPv4/IPv6の判別など、PowerShellならではの柔軟な操作が可能です。ネットワークトラブルの診断やルート構成の確認、VPN利用時の経路チェックなど、様々な場面で役立ちます。
今後は、「New-NetRoute」や「Remove-NetRoute」などと組み合わせてルートを動的に変更する応用操作にも挑戦してみると、より一層ネットワーク管理スキルが高まるでしょう。