ZetCode

PowerShell New-NetRoute

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍PowerShell中的New-NetRoute cmdlet。此cmdlet会在IP路由表中创建网络路由。

网络路由基础知识

网络路由定义了网络流量到达目的地所经过的路径。路由由目标网络、网关和接口索引组成。New-NetRoute cmdlet将静态路由添加到路由表中。这些路由将一直存在,直到被手动删除或系统重新启动。

New-NetRoute 基本用法

New-NetRoute 的最简单用法需要目标前缀、下一跳和接口索引。目标前缀指定目标网络。下一跳是路由的网关IP地址。

route1.ps1
New-NetRoute -DestinationPrefix "192.168.2.0/24" -NextHop "192.168.1.1" -InterfaceIndex 12

此命令通过接口 12,使用网关 192.168.1.1 为 192.168.2.0/24 网络添加了一条路由。该路由将立即生效。

添加持久性路由

默认情况下,使用New-NetRoute创建的路由不是持久性的。使用"-PolicyStore"参数与"PersistentStore"一起,可以使它们在重启后依然存在。持久性路由存储在注册表中,并在启动时重新应用。

route2.ps1
New-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.2" `
    -InterfaceIndex 12 -PolicyStore PersistentStore

此命令为 10.0.0.0/8 网络创建了一条持久性路由。反引号 (`) 是PowerShell中的行连接字符。路由将在系统重启后仍然保留。

设置路由度量

当存在多个相同目的地的路由时,路由度量决定了优先级。度量值越低,优先级越高。使用-RouteMetric参数指定此值。默认度量值通常已足够。

route3.ps1
New-NetRoute -DestinationPrefix "172.16.0.0/16" -NextHop "192.168.1.3" `
    -InterfaceIndex 12 -RouteMetric 5

此命令为 172.16.0.0/16 网络添加了一条度量值为 5 的路由。如果存在具有更高度量值的另一条路由,则将优先使用此路由。

创建默认路由

默认路由 (0.0.0.0/0) 用于处理不存在特定路由的流量。这通常用于将流量定向到Internet网关。其原理与常规路由相同。

route4.ps1
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.1.254" `
    -InterfaceIndex 12 -PolicyStore PersistentStore

此命令通过网关 192.168.1.254 创建了一条持久性默认路由。除非存在更具体的路由,否则所有非本地流量都将使用此路由。

添加具有特定接口的路由

当存在多个网络接口时,使用-InterfaceIndex指定要使用的接口。使用Get-NetAdapter查找接口索引。索引唯一标识系统上的每个网络接口。

route5.ps1
$ifIndex = (Get-NetAdapter -Name "Ethernet").ifIndex
New-NetRoute -DestinationPrefix "192.168.3.0/24" -NextHop "192.168.1.4" `
    -InterfaceIndex $ifIndex

此命令首先检索“Ethernet”适配器的接口索引。然后,它使用该接口专门创建一条路由。这确保了路由使用正确的物理或虚拟网络接口。

来源

PowerShell 文档

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

作者

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

列出 所有 PowerShell 教程