ZetCode

PowerShell Remove-NetRoute

最后修改:2025 年 2 月 15 日

本文介绍了 PowerShell 中的 Remove-NetRoute cmdlet。它用于从路由表中删除 IP 路由。网络路由指导不同网络之间的流量。管理路由对于网络配置和故障排除至关重要。

网络路由基础知识

网络路由定义了网络流量的路径。它包含目标、子网掩码、网关和接口。路由可以是持久的,也可以是临时的。路由表决定了数据包的转发位置。Remove-NetRoute 用于删除不需要的或错误的路由。

Remove-NetRoute 的基本用法

使用 Remove-NetRoute 最简单的方法是指定目标前缀。这将删除与指定网络地址匹配的路由。需要管理员权限。在删除路由之前,请务必进行验证。

route1.ps1
Remove-NetRoute -DestinationPrefix "192.168.1.0/24" -Confirm:$false

此命令删除 192.168.1.0/24 网络的路由。-Confirm:$false 参数会抑制确认提示。删除路由时要小心,因为它可能会中断网络连接。

按接口索引删除路由

可以根据路由使用的接口来删除路由。每个网络接口都有一个唯一的索引号。这对于清理特定适配器的路由很有用。首先使用 Get-NetAdapter 识别接口索引。

route2.ps1
Remove-NetRoute -InterfaceIndex 12 -Confirm:$false

此命令删除与接口索引 12 相关的所有路由。可以使用 Get-NetIPInterface 找到接口索引。如果多个路由共享相同的接口,可能会删除多个路由。

使用网关删除特定路由

为了更精确地删除,请同时指定目标和网关。这将确保只删除精确匹配的路由。当存在同一网络的多个路由时,此方法非常有用。必须完全匹配网关才能删除路由。

route3.ps1
Remove-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.1" -Confirm:$false

此命令仅删除使用 192.168.1.1 作为网关的 10.0.0.0/8 路由。通过不同网关访问 10.0.0.0/8 的其他路由将不受影响。这种精确性可以防止意外删除有效的路由。

使用管道删除多个路由

PowerShell 的管道允许一次处理多个路由。首先使用 Get-NetRoute 过滤路由,然后通过管道传递给 Remove-NetRoute。这使得可以根据度量值或协议等各种标准进行批量操作。

route4.ps1
Get-NetRoute -InterfaceAlias "Ethernet" | Remove-NetRoute -Confirm:$false

此命令删除与以太网接口相关的所有路由。管道将每个路由对象直接传递给删除 cmdlet。执行此类批量操作之前,请务必检查路由。

删除具有特定度量值的路由

路由具有决定优先级的度量值。度量值越低,优先级越高。您可以根据度量值删除路由。这有助于清理不太优化的路由,同时保留较好的路由。

route5.ps1
Get-NetRoute | Where-Object { $_.RouteMetric -gt 50 } | Remove-NetRoute -Confirm:$false

此命令删除所有度量值大于 50 的路由。Where-Object cmdlet 首先过滤路由。可以使用 Get-NetRoute | Select-Object DestinationPrefix, RouteMetric 查看度量值。

来源

PowerShell 文档

本文介绍了 PowerShell 中的 Remove-NetRoute cmdlet。正确的路由管理对于网络稳定性和性能至关重要。

作者

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

列出 所有 PowerShell 教程