ZetCode

PowerShell Get-NetRoute

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍 PowerShell 中的 Get-NetRoute cmdlet。此 cmdlet 从网络堆栈检索 IP 路由信息。它显示流量如何在网络接口之间进行路由。

网络路由基础知识

网络路由定义了网络流量到达目的地所经过的路径。路由包含目标网络、下一跳和接口索引。Get-NetRoute cmdlet 显示 IP 路由表。此表根据数据包的目标 IP 确定数据包的转发位置。

Get-NetRoute 的基本用法

使用 Get-NetRoute 的最简单方法是不带任何参数。这将列出路由表中的所有 IP 路由。输出包括目标前缀、下一跳和接口索引。每条路由都表示为一个 NetRoute 对象。

route1.ps1
Get-NetRoute

此命令从 IP 路由表中检索所有路由。输出显示目标网络、下一跳和接口指标。默认路由显示为 0.0.0.0/0。

按目标前缀过滤路由

您可以使用 -DestinationPrefix 参数按目标前缀过滤路由。这将显示与特定网络地址匹配的路由。支持使用通配符进行部分匹配。这有助于排除特定网络的路由问题。

route2.ps1
Get-NetRoute -DestinationPrefix "192.168.*"

此命令返回 192.168.x.x 网络的所有路由。星号用作通配符,匹配任何八位字节值。这对于查看本地网络路由很有用。

PS C:\> .\route2.ps1

ifIndex DestinationPrefix    NextHop       RouteMetric PolicyStore
------- -----------------   ------       ------------ -----------
    15 192.168.1.0/24      0.0.0.0             256 ActiveStore
    15 192.168.1.15/32     0.0.0.0             256 ActiveStore

获取特定接口的路由

可以使用 -InterfaceIndex 参数按网络接口过滤路由。每个接口都有一个唯一的索引号。这将显示特定网络适配器的路由信息。使用 Get-NetAdapter 查找接口索引。

route3.ps1
Get-NetRoute -InterfaceIndex 15

此命令返回与接口索引 15 相关的所有路由。输出显示了流量如何通过此特定网络适配器进行路由。

查看详细的路由信息

可以使用 Format-List 更改默认表格格式,以获取详细的路由信息。这将显示路由对象的所有可用属性。您还可以使用 Select-Object 选择特定属性。

route4.ps1
Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Format-List *

此命令以列表格式显示默认路由的所有属性。输出包括路由指标、策略和协议信息。

按路由指标过滤路由

您可以使用 Where-Object 根据路由的指标值过滤路由。当存在多个路径时,指标决定了路由的优先级。较低的指标表示首选路由。这有助于分析路由决策。

route5.ps1
Get-NetRoute | Where-Object { $_.RouteMetric -lt 50 }

此命令列出指标小于 50 的路由。$_ 变量代表管道中的当前路由。根据需要调整阈值以供分析。

来源

PowerShell 文档

在本文中,我们介绍了 PowerShell 中的 Get-NetRoute cmdlet。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PowerShell 教程