首页 > 解决方案 > 如何从 Windows 10 获得干净的排序和过滤路由表?

问题描述

我希望能够看到我的 Windows 10 路由表的简单排序。我正在尝试调试同时运行的几个 VPN 之间的子网冲突,当我尝试查看我的更改时,路由表让我的眼睛受伤。我可以简单地显示非默认路由(下一跳到 0.0.0.0),然后只显示我认为相关的字段吗?

哦,我只想查看 IPv4 路由。IPv6 在这里不相关。

标签: powershellrouteswindow

解决方案


该命令应该为您提供您正在寻找的内容。

Get-NetRoute -AddressFamily IPv4 -State Alive |
Where-Object {$_.NextHop -ne '0.0.0.0'} |
Sort-Object InterfaceAlias |
Select-Object -Property InterfaceAlias,DestinationAddress,DestinationPrefix,NextHop

解释:

Get-NetRoute每条路线输出一个对象。我们-AddressFamily用于仅获取 IPv4 路由并-State确保它是活动路由。然后我们将这些对象通过管道输送到Where-Object我们过滤的位置,以仅使用 NextHop 不是 0.0.0.0 的路由。

剩下的对象被传递给,Sort-Object所以它们按接口列出,然后Select-Object选择我们希望看到的属性。我认为 InterfaceAlias、DestinationAddress、DestinationPrefix、NextHop 在典型的调试工作中最有帮助。

奖金:

您可以创建一个简单的 powershell 函数并将其放在您的 profile.ps1(存储为 $PROFILE 的位置)中以保存您的理智。

function Get-RoutesV4 { 
  Get-NetRoute -AddressFamily IPv4 -State Alive | Where-Object {$_.NextHop -ne '0.0.0.0'} | Sort-Object InterfaceAlias | Select-Object -Property InterfaceAlias,DestinationAddress,DestinationPrefix,NextHop 
}

function Get-RoutesV6 { 
  Get-NetRoute -AddressFamily IPv6 -State Alive | Where-Object {$_.NextHop -ne '0.0.0.0'} | Sort-Object InterfaceAlias | Select-Object -Property InterfaceAlias,DestinationAddress,DestinationPrefix,NextHop 
}

function Get-Routes { 
  Get-NetRoute -State Alive | Where-Object {$_.NextHop -ne '0.0.0.0'} | Sort-Object InterfaceAlias | Select-Object -Property InterfaceAlias,DestinationAddress,DestinationPrefix,NextHop 
}

推荐阅读