route print、netstat -r 和 Get-NetRoute 命令的详细分析,表格化展示了它们的功能、输出内容、使用场景、平台兼容性等方面的对比。快速诊断:如果只是想快速查看系统的路由信息,可以选择 route print 或 netstat -r。 PowerShell 管理与自动化:如果需要更强的过滤和格式化功能,或者进行复杂的路由表管理操作,

route print、netstat -r、Get-NetRoute 应用场景划分

底层共性:三者都是读取 Windows 路由表,最终都调用 iphlpapi.dll 的 GetIpForwardTable2,读取 tcpip.sys 内核路由表;差异集中在输出格式、信息丰富度、解析能力、自动化支持、系统兼容性。

注意:netstat -r 在新版 Windows 底层内部就是封装调用 iphlpapi,本质等价于 route print 的读取逻辑,只是输出排版不同。

1. route print

原理

route.exe → iphlpapi!GetIpForwardTable2,拿到 MIB_IPFORWARD_TABLE2,格式化纯文本输出,分 IPv4 路由表、IPv6 路由表、接口列表、ARP 相关信息。

✅ 支持:IPv4/IPv6,同时打印网卡接口索引、接口名称;可以单独输出 IPv4/IPv6。

✅ 适用场景

  1. 现场人工快速排错、机房 / 远程桌面应急排查 运维人员手工看路由,习惯的传统视图,网关、接口、度量值一目了然。
  2. 老旧系统、WinPE、精简系统应急查看 XP/2003、维护 PE 环境,默认自带 route.exe,一定存在。
  3. 简单人工核验,不需要程序解析输出 只给人看,不写脚本去截取文本字段。

❌ 不适合场景

  • 自动化脚本、程序解析(纯文本,正则解析容易因语言包、换行、版本差异失效)
  • 大规模路由审计、筛选特定网段 / 接口路由
  • 获取路由高级属性(路由来源、Publish 标记、生存期)

示例

route print
route print -4    #仅IPv4
route print -6    #仅IPv6

2. netstat -r

原理

netstat.exe 调用 iphlpapi 获取路由表,输出风格近似 route print;额外附带网络接口列表、IP 地址。

重要提示:微软已标记 netstat 为传统遗留工具,Windows 文档推荐改用 PowerShell。

✅ 适用场景

  1. 习惯 Linux 运维人员迁移到 Windows,沿用 netstat -r 查看路由 Linux netstat -r 输出逻辑接近,运维人员记忆成本低。
  2. 一次性快速同时查看路由表 + 网卡 IP 映射,简单手工排查。
  3. 老旧脚本遗留代码(早年写的 CMD 脚本用 netstat -r 抓取路由)

❌ 不适合场景

  • 现代自动化运维、结构化数据处理
  • 大规模巡检,文本解析不稳定
  • 获取路由高级属性(只输出基础字段,无路由来源、PolicyStore 等)
  • 长期维护脚本(netstat 逐步边缘化,微软不再重点更新)

对比小细节:route print 会额外输出 ARP 条目,netstat -r 不会。

netstat -r

3. Get-NetRoute(PowerShell NetTCPIP Cmdlet)

原理

CIM 提供程序 → iphlpapi.dll!GetIpForwardTable2,返回结构化 PSObject 对象,完整映射 MIB_IPFORWARD_ROW2 全部字段。 可区分 ActiveStore(内核内存临时路由)、PersistentStore(注册表持久路由),拿到完整路由元数据。

✅ 适用场景

  1. 自动化巡检、批量审计、路由基线比对 直接筛选、过滤、导出 CSV,无需脆弱的正则文本解析。 例:定期巡检,告警缺失 / 异常路由,保存路由快照。
  2. 精细化筛选路由(按接口索引、网段、下一跳、Metric、地址族) 例如:只查看 InterfaceIndex=12 的全部 IPv6 路由。
  3. 获取高级路由属性:路由来源、Publish 标记、路由生存期、PolicyStore route print / netstat -r 看不到这些字段。
  4. 远程 CIM 会话,批量多主机拉取路由信息 跨服务器统一采集路由表,适合企业监控平台。
  5. 自动化流水线、配置即代码,前置校验路由是否已存在 脚本添加路由前,先 Get-NetRoute 判断是否重复,避免报错。

❌ 不适合场景

  • WinPE、Windows XP 等无 NetTCPIP 模块的老旧精简环境
  • 临时快速随手看路由(命令更长,不如 route print 简单)
  • 禁止启用 PowerShell 的高安全隔离终端

示例

# 获取全部路由
Get-NetRoute
# 仅IPv4
Get-NetRoute -AddressFamily IPv4
# 筛选指定接口路由
Get-NetRoute -InterfaceIndex 12
# 导出路由清单到CSV审计
Get-NetRoute | Export-Csv C:\route_backup.csv -Encoding UTF8
# 查看持久注册表内保存的路由(不读内核内存)
Get-NetRoute -PolicyStore PersistentStore

汇总对比表

对比项 route print netstat -r Get-NetRoute
输出类型 纯文本 纯文本 结构化对象
高级路由属性 ❌ 仅基础目标 / 网关 / 度量 / 接口 ❌ 仅基础字段 ✅完整(PolicyStore、Publish、RouteLifetime、Protocol 等)
IPv4/IPv6 分离查看 ✅ -4 -6 不支持参数分离,只能一起输出 ✅ -AddressFamily
远程采集 ❌原生不支持,需 psexec ❌原生不支持 ✅CIM/WinRM 远程批量拉取
自动化解析 差,文本易乱 差,文本易乱 极强,管道、过滤、导出 CSV
系统兼容性 最强,XP/PE 都有 较好,Vista+ Win8/Server2012+
微软推荐状态 遗留工具 已逐步弃用 ✅现代官方推荐
典型用途 人工现场快速排查 Linux 转 Windows 运维习惯查看 审计、监控、自动化、远程批量采集

选型决策树

  1. 人工现场快速看路由,应急排查,老旧 / PE 系统 → route print
  2. 运维习惯 Linux netstat,临时手工查看 → netstat -r(仅临时手工,不要写进新自动化脚本)
  3. 巡检、审计、脚本自动化、远程采集、需要查看持久路由元数据 → Get-NetRoute

关键边界 & 踩坑提醒

  1. ActiveStore vs PersistentStore 重要差异(只有 Get-NetRoute 可以区分)
    • route print / netstat -r:只读取内核内存 ActiveStore(当前生效路由),看不到注册表里面保存但还没加载的持久路由。
    • Get-NetRoute -PolicyStore PersistentStore:直接读取注册表PersistentRoutes,可以发现:注册表存在路由条目,但因为异常没有加载进内核的问题(非常适合排查route -p重启路由丢失故障)。
  2. 三者读取内核路由表的数据来源相同,正常情况下,当前生效路由条目应该一致;如果出现不一致,基本是缓存 / 内核 tcpip.sys 异常。
  3. 脚本禁止混用 route print 正则解析;Windows 多语言系统,表头文字会变,正则直接失效,这是生产脚本高频坑,自动化场景优先 Get-NetRoute。

FMEA 风险矩阵:route print /netstat -r / Get-NetRoute

FMEA 定义说明 S:严重度 (1~10),10 = 业务完全中断;O:发生度 (1~10),10 = 极易发生;D:探测度 (1~10),10 = 几乎无法探测;RPN=S×O×D,RPN 越高风险越高。

分析对象:3 种 Windows 路由查询工具,

失效场景:权限不足、tcpip.sys 内核异常、文本解析失败、模块缺失、多语言输出乱码、接口索引失效等。

底层共性:全部依赖 iphlpapi.dll 调用 tcpip.sys IOCTL 获取路由表。

风险矩阵总表

序号 失效模式 潜在原因 受影响工具 影响描述 S O D RPN 风险等级
1 查询返回拒绝,无法读取路由表 执行账号权限不足;内核设备\Device\Tcp访问 ACL 限制 route print、netstat -r、Get-NetRoute 普通用户可以读取路由表,但如果系统安全策略 / 硬编码 ACL 收紧,查询报错;高安全基线 / 服务器加固场景触发。注:路由修改才必须管理员,查询默认普通用户可读,属于加固后才会出现的失效 6 2 4 48 中风险
2 返回路由表为空 / 残缺,实际网络存在路由 tcpip.sys 驱动异常、tcpip.sys 未加载、IRP 请求失败、内核协议栈崩溃 route print、netstat -r、Get-NetRoute 无法获取内核路由,运维无法判断转发策略;业务网络转发异常,排查受阻 9 1 3 27 中风险
3 文本输出解析失败(正则捕获字段错乱) 系统多语言版本;系统版本变更,route/netstat 表头文字、换行、分隔符发生变化 route print、netstat -r CMD 自动化脚本使用正则抓取网段 / 网关,在简体 / 英文 / 繁体系统下脚本直接失效。Get-NetRoute 不受此影响 7 4 2 56 高风险
4 工具程序缺失 / 被删除 / PE 镜像精简裁剪 系统精简、WinPE、嵌入式系统、安全软件隔离删除 exe route print:极少缺失netstat -r:部分精简系统移除 netstat.exeGet-NetRoute:NetTCPIP CIM 模块缺失 无法执行路由查询;自动化巡检中断。Get-NetRoute 在 XP/2003 完全不可用 8 3 3 72 高风险
5 输出数据不一致:持久路由注册表存在,但内核路由不加载 PersistentRoutes注册表损坏,开机 tcpip.sys 加载失败;route -p 写入异常 route print、netstat -r⚠️二者仅读取 ActiveStore(内核生效路由)看不到注册表持久路由Get-NetRoute 可单独查询 PersistentStore,可发现该差异 运维误判:以为持久路由不存在,反复重复添加;重启路由丢失故障难以定位 8 2 4 64 高风险
6 工具执行超时、查询挂起 tcpip.sys IRP 阻塞、网卡 NDIS 驱动死锁,IOCTL 调用长时间不返回 route print、netstat -r、Get-NetRoute 查询命令卡死,脚本进程卡住,巡检任务超时阻塞 7 1 5 35 中风险
7 Get-NetRoute:CIM/WinRM 远程查询失败 WinRM 未启用、防火墙拦截、CIM 提供程序损坏、WMI 损坏 仅 Get-NetRoute 远程批量路由采集、多主机巡检中断;本地执行不受影响 7 4 3 84 高风险
8 Get-NetRoute:对象字段缺失 / 属性返回 null NetTCPIP CIM 提供程序损坏、组件注册失效 仅 Get-NetRoute 可以查到基础路由条目,但高级字段(Publish、RouteLifetime、PolicyStore)为空,无法审计高级路由属性 6 2 4 48 中风险
9 输出存在过时缓存路由条目 tcpip.sys 内核缓存未刷新,网卡热插拔 / VPN 下线,内核路由未清理 route print、netstat -r、Get-NetRoute 看到已经失效的残留路由,运维误判路由状态,错误定位网络故障 6 2 5 60 高风险
10 IPv6 路由信息丢失 / 显示不全 系统 IPv6 协议栈禁用,tcpip.sys IPv6 子模块未加载 route print、netstat -r、Get-NetRoute 双栈环境下,仅能看到 IPv4 路由,IPv6 路由查询为空 7 2 3 42 中风险

工具专属风险汇总(精简)

route print

✅优势:兼容性最强; ⚠️专属高风险点:文本多语言表头,自动化正则解析极易失效;只能读取内核 ActiveStore,无法查看注册表持久路由,排查-p路由重启丢失难度大。

netstat -r

✅优势:Linux 运维人员习惯,自带在 Vista+; ⚠️专属高风险点:微软标记遗留工具,无更新维护;同样纯文本输出,解析脆弱;不支持 IPv4/IPv6 单独筛选参数,输出混杂。

Get-NetRoute

✅优势:结构化对象,无文本解析问题;区分 Active/Persistent 存储;远程 CIM 采集;完整高级路由字段; ⚠️专属高风险点:依赖 NetTCPIP CIM 组件 + WinRM(远程场景);老旧系统不支持;CIM/WMI 组件损坏会丢失路由高级属性。

风险优先处理顺序(RPN 从高到低)

  1. Get-NetRoute 远程查询失败(RPN=84)
  2. 精简系统缺失工具 / 模块(RPN=72)
  3. 持久路由注册表和内核路由不一致(RPN=64)
  4. 内核缓存残留失效路由(RPN=60)
  5. route/netstat 文本正则解析失败(RPN=56)

控制措施 & 预防对策

风险项 控制措施
文本解析失败(route/netstat) 禁止在自动化脚本使用 route print /netstat -r 正则解析路由,巡检脚本全部改用 Get-NetRoute;人工排查场景才使用 route print
tcpip.sys 异常、IRP 阻塞 增加前置健康检查:sc query tcpip,检查 tcpip 服务状态;脚本增加超时机制,防止进程卡死
持久路由内核和注册表不一致 审计脚本增加双查询:Get-NetRoute -PolicyStore ActiveStore 和 Get-NetRoute -PolicyStore PersistentStore,比对快照差异告警
CIM/WinRM 远程故障 远程巡检增加降级预案:CIM 失败时,使用 psexec 本地执行 route print 作为降级采集方案
权限 / ACL 限制 基线文档明确:路由查询权限最小权限;加固服务器提前测试\Device\Tcp读取权限
精简环境缺少 NetTCPIP PE / 老旧服务器应急场景,使用 route print 作为备用查询手段

探测方法补充

  1. 人工探测:管理员手动执行命令,肉眼核对路由表
  2. 自动化探测:PowerShell 快照比对脚本,记录路由基线,检测条目变更
  3. 内核层探测:Procmon 捕获 DeviceIoControl 返回结果,判断 tcpip.sys IOCTL 是否返回成功

 

route print、netstat -r 和 Get-NetRoute 命令的详细分析,表格化展示了它们的功能、输出内容、使用场景、平台兼容性等方面的对比。

特性 route print netstat -r Get-NetRoute
命令类型 传统的命令行工具 传统的命令行工具 PowerShell cmdlet
描述 显示当前系统的路由表信息。 显示当前系统的路由表,并提供附加的网络统计信息。 通过 PowerShell 获取和管理路由表信息,支持多种筛选、格式化和管理功能。
输出内容 - 目标网络(Destination) - 子网掩码(Netmask) - 网关(Gateway) - 接口(Interface) - 路由类型(Metric) - 目标(Destination) - 网关(Gateway) - 路由类型(Metric) - 网络连接统计信息(如TCP连接等) - 目标网络(Destination) - 子网掩码(Netmask) - 网关(Gateway) - 接口(Interface) - 路由类型(Metric) - 路由状态等信息
功能特点 提供一个传统的、易于理解的路由表输出,适合查看和诊断网络路由配置。 除了显示路由表外,还包含关于当前网络连接的详细统计信息。 强大的过滤、格式化功能,可以更细致地查看路由表或进行路由表管理。
使用场景 用于快速查看路由表信息。常见于诊断网络连接问题时。 用于查看路由表的同时,获取网络连接和传输统计等更全面的网络信息。 在 PowerShell 中进行路由表的详细管理与操作,尤其适合自动化脚本和复杂分析。
命令输出格式 传统的文本格式,输出较为简单,列出每个路由条目的基本信息。 传统文本格式,输出较为简洁,除了路由表外,还包括其他网络连接的状态信息。 支持格式化输出,支持自定义输出字段,数据可进一步处理和筛选。
适用平台 CMD 和 PowerShell 都可使用。 CMD 和 PowerShell 都可使用。 PowerShell 专用命令。
是否支持过滤 不支持内建过滤功能。 不支持内建过滤功能。 支持强大的过滤功能(如使用 -InterfaceIndex 等进行筛选)。
是否支持格式化 不支持格式化输出。 不支持格式化输出。 支持多种格式化输出方式,例如表格、列表、JSON 等。
输出详细程度 显示详细的路由信息,但格式较为简单。 显示路由信息外,还会提供当前的网络连接及其统计数据,输出较为杂乱。 显示详细的路由表信息,输出可以通过格式化和筛选变得更加精简和清晰。
交互性 输出为静态信息,不能进行动态交互。 输出为静态信息,不能进行动态交互。 支持与 PowerShell 脚本交互,可以进行动态管理和自动化任务。
是否支持修改路由表 仅显示路由表,不能直接修改。 仅显示路由表,不能直接修改。 通过 PowerShell 可结合 New-NetRoute、Remove-NetRoute 等命令修改路由表。

详细功能对比:

  1. 输出格式:

    • route print 输出是传统的文本格式,易于理解,但不适合进行复杂的自动化处理或筛选。
    • netstat -r 输出也以传统文本格式呈现,除了路由表信息外,输出会包含大量的网络连接统计,可能导致信息过于复杂。
    • Get-NetRoute 则支持格式化输出,可以输出 JSON、表格或其他格式的数据,便于进一步的处理和分析。
  2. 过滤与格式化:

    • route print 和 netstat -r 不支持内建的过滤功能,只能提供原始的路由表数据。
    • Get-NetRoute 是 PowerShell 特有的命令,提供强大的筛选和格式化功能,可以基于特定条件输出路由信息。
  3. 使用场景:

    • route print 和 netstat -r 都适合日常的网络诊断,简单快捷,特别是在需要快速查看路由表时。
    • Get-NetRoute 则适合更复杂的需求,尤其是在进行自动化任务、脚本操作或分析时,PowerShell 的高级功能让它成为系统管理员的强大工具。
  4. 平台兼容性:

    • route print 和 netstat -r 都可以在 CMD 和 PowerShell 中使用,兼容性好。
    • Get-NetRoute 仅能在 PowerShell 环境中运行,因此如果需要在脚本中使用,它的功能更强大,但不适用于老旧的 CMD 环境。

适用场景总结:

  • 快速诊断:如果只是想快速查看系统的路由信息,可以选择 route print 或 netstat -r。
  • PowerShell 管理与自动化:如果需要更强的过滤和格式化功能,或者进行复杂的路由表管理操作,Get-NetRoute 是更好的选择,特别适合在 PowerShell 脚本中使用。

在 Windows 中,你可以使用以下命令来查看路由表:

route print:
这是最常用的命令,它会列出当前系统上的所有路由信息。打开命令提示符(CMD)或 PowerShell,然后输入 route print 即可查看路由表。

netstat -r:
这个命令也可以显示路由表,以及一些其他的网络统计信息。在命令提示符或 PowerShell 中输入 netstat -r 即可查看。

Get-NetRoute PowerShell cmdlet:
如果你在 PowerShell 中工作,你可以使用 Get-NetRoute cmdlet 来获取路由表信息。在 PowerShell 中输入 Get-NetRoute 即可。

这些命令会显示当前系统上的路由信息,包括目标网络、网关、接口、路由类型等。根据你的需要选择其中之一来查看路由表信息。

要在 PowerShell 中以表格的形式显示 HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes 注册表项的内容,首先需要确认该路径中有相关的数据。假设该路径中确实存在一些持久路由信息,你可以按照以下方式以表格化形式显示:

  1. 查询注册表路径内容: 使用 Get-ItemProperty 获取注册表项的属性,并格式化输出为表格。

  2. 格式化为表格: 使用 Format-Table 将结果格式化为表格显示。

示例代码

假设你的注册表路径下有持久路由信息,可以使用以下 PowerShell 命令:

powershellCopy Code
$regPath = "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes"
$routes = Get-ItemProperty -Path $regPath

# 如果路由信息存在,按表格形式显示
$routes | Format-Table -Property Destination, Mask, Gateway, InterfaceIndex

解释:

  • $regPath 是目标注册表路径。
  • Get-ItemProperty -Path $regPath 获取该路径下的所有注册表项。
  • Format-Table 将输出格式化为表格。你可以选择显示的属性(例如 Destination,Mask,Gateway,InterfaceIndex)。

输出结果示例:

如果该路径包含持久路由信息,输出可能如下:

Destination Mask Gateway InterfaceIndex
192.168.1.0 255.255.255.0 192.168.0.1 12
10.0.0.0 255.0.0.0 10.0.0.1 15

如果注册表路径为空或者没有持久路由配置,可能会显示空表格,或者没有任何输出。

如果没有任何数据

如果 Get-ItemProperty 没有任何输出,可能是因为路径为空或不存在。你可以先检查注册表路径是否有效,使用以下命令:

powershellCopy Code
Test-Path -Path $regPath
  • 如果返回 True,路径存在,但可能没有任何数据。
  • 如果返回 False,则表示该路径不存在,系统中可能没有配置持久路由。

其他有用的操作

如果你有多个路由,或者路由是以某些特定的命名规则存储的,你可以进一步进行自定义筛选。例如,你可以列出所有属性:

powershellCopy Code
$routes | Format-List

这将列出该注册表项下的所有键值对。

总结:

  • 使用 Format-Table 可以将路由信息格式化为表格显示。
  • 你可以根据需要筛选特定字段来显示相关信息。
  • 如果路径下没有数据,可以检查路径是否存在或尝试使用其他方式(如 route 命令)查看路由信息。

 

通过 Windows 的图形用户界面 (GUI) 来添加、删除、修改和查看静态路由。以下是使用 GUI 的步骤:

  1. 添加静态路由:

    • 打开“控制面板”。
    • 选择“网络和共享中心”。
    • 点击左侧的“更改适配器设置”。
    • 右键单击要添加静态路由的网络适配器,并选择“属性”。
    • 在网络连接属性中,选择“Internet 协议版本 4 (TCP/IPv4)”(或者根据你的情况选择相应的协议版本)。
    • 点击“属性”按钮。
    • 在下方找到“高级”按钮并点击。
    • 在高级 TCP/IP 设置中,选择“IP 设置”选项卡。
    • 点击“添加”按钮。
    • 在弹出的对话框中,输入目标网络、子网掩码和网关地址,然后点击“添加”和“确定”按钮以保存设置。
  2. 删除静态路由:

    • 依次打开“控制面板” > “网络和共享中心” > “更改适配器设置”。
    • 右键单击要删除静态路由的网络适配器,并选择“属性”。
    • 在网络连接属性中,选择“Internet 协议版本 4 (TCP/IPv4)”(或者根据你的情况选择相应的协议版本)。
    • 点击“属性”按钮。
    • 在下方找到“高级”按钮并点击。
    • 在高级 TCP/IP 设置中,选择“IP 设置”选项卡。
    • 选中要删除的静态路由条目,然后点击“删除”按钮。
  3. 修改静态路由:

    • 使用上述删除和添加静态路由的步骤来修改静态路由。先删除旧的路由,然后再添加新的路由。
  4. 查看静态路由:

    • 在图形用户界面中查看静态路由可以通过网络适配器属性来完成。在“高级 TCP/IP 设置”中,你可以看到当前配置的所有静态路由。

使用图形界面操作可以更直观地管理静态路由,特别是对于不熟悉命令行的用户来说。

 

 

在 PowerShell 中,路由表的管理涉及一系列的命令和功能。以下是根据不同操作类型对相关 PowerShell 路由表命令进行分类和表格化的对比。

PowerShell 路由表管理命令分类对比表

分类 命令 描述 示例
查看路由表 Get-NetRoute 获取系统中的所有路由表条目。可以通过各种参数筛选和格式化输出。 Get-NetRoute
      Get-NetRoute -DestinationPrefix "192.168.1.0/24"
添加路由 New-NetRoute 向路由表中添加新的路由条目。可以指定目标地址、子网掩码、网关和接口等。 New-NetRoute -DestinationPrefix "10.10.10.0/24" -NextHop "192.168.1.1" -InterfaceIndex 12
删除路由 Remove-NetRoute 从路由表中删除指定的路由条目。可以通过路由的目标地址或其他条件来指定删除的路由。 Remove-NetRoute -DestinationPrefix "10.10.10.0/24" -NextHop "192.168.1.1"
修改路由 Set-NetRoute 修改现有的路由条目,可以更新目标地址、网关或其他属性。 Set-NetRoute -DestinationPrefix "192.168.1.0/24" -NextHop "192.168.1.254"
清空路由表 Clear-NetRoute 清空路由表中的所有条目。常用于恢复到默认的路由配置。 Clear-NetRoute
查看路由信息 Get-NetIPInterface 获取系统中网络接口的详细信息,包括每个接口的路由配置。 Get-NetIPInterface
路由表查看过滤 Get-NetRoute -InterfaceIndex 基于接口索引过滤路由条目,查看特定接口的路由信息。 Get-NetRoute -InterfaceIndex 12
路由表查看过滤 Get-NetRoute -DestinationPrefix 基于目标网络的前缀(IP 地址)过滤路由条目。 Get-NetRoute -DestinationPrefix "192.168.1.0/24"
路由表查看过滤 Get-NetRoute -NextHop 基于网关(下一跳)过滤路由条目。 Get-NetRoute -NextHop "192.168.1.1"

各命令功能解释:

  1. 查看路由表:Get-NetRoute

    • 该命令用来查看系统中所有的路由表条目。可以结合不同的筛选条件(如目标前缀、网关、接口索引等)进行细化查询。
    • 例子:Get-NetRoute -DestinationPrefix "192.168.1.0/24" 查看目标为 192.168.1.0/24 的路由。
  2. 添加路由:New-NetRoute

    • 用于向路由表中添加新的路由。添加时需要指定目标网络地址、下一跳(网关)、接口索引等信息。
    • 例子:New-NetRoute -DestinationPrefix "10.10.10.0/24" -NextHop "192.168.1.1" -InterfaceIndex 12 添加到 10.10.10.0/24 的路由,下一跳为 192.168.1.1。
  3. 删除路由:Remove-NetRoute

    • 从路由表中删除一个或多个路由条目,可以通过目标地址或网关等条件来指定需要删除的路由。
    • 例子:Remove-NetRoute -DestinationPrefix "10.10.10.0/24" -NextHop "192.168.1.1" 删除目标为 10.10.10.0/24 且下一跳为 192.168.1.1 的路由。
  4. 修改路由:Set-NetRoute

    • 修改现有路由条目的属性(如网关、目标网络地址等)。可以用于更新路由信息。
    • 例子:Set-NetRoute -DestinationPrefix "192.168.1.0/24" -NextHop "192.168.1.254" 将目标为 192.168.1.0/24 的路由的网关改为 192.168.1.254。
  5. 清空路由表:Clear-NetRoute

    • 清空所有路由表条目,相当于删除路由表中的所有配置。这通常用于恢复系统默认的路由设置。
    • 例子:Clear-NetRoute 会清除系统中所有的路由条目。
  6. 查看网络接口信息:Get-NetIPInterface

    • 查看系统中所有网络接口的详细信息,包括每个接口的路由配置。可以用来获取接口的配置细节。
    • 例子:Get-NetIPInterface 查看所有接口信息。

进阶功能和参数:

  • 接口索引过滤:通过 -InterfaceIndex 参数筛选出某个特定接口的路由条目。适用于需要查看或管理特定接口的路由配置时。
  • 目标网络过滤:通过 -DestinationPrefix 参数,能够基于网络目标地址筛选路由条目,便于查看特定网络的路由。
  • 网关过滤:通过 -NextHop 参数筛选出所有指向特定网关的路由。

小结:

PowerShell 提供了丰富的命令来管理和查看路由表,适用于不同的需求:从简单的路由查看到复杂的路由条目添加、删除与修改。这些命令可以通过不同的过滤和格式化功能,使路由表的管理更加灵活和高效。

route 命令(在 Windows 中用于管理路由表)的分类和相关命令的表格化对比。路由表管理通常涉及查看、添加、删除和修改路由等操作。

Windows route 命令分类对比表

分类 命令 描述 示例
查看路由表 route print 显示当前路由表的内容,显示网络接口信息、路由条目以及其他详细的路由配置。 route print
添加路由 route add 向路由表添加一条新的路由。需要指定目标网络、子网掩码、网关、接口等信息。 route add 192.168.1.0 mask 255.255.255.0 192.168.0.1
删除路由 route delete 从路由表中删除指定的路由条目。通常根据目标网络、网关或其他参数来删除特定的路由。 route delete 192.168.1.0
修改路由 route change 修改已存在的路由条目,常用于更新网关、目标地址等。 route change 192.168.1.0 mask 255.255.255.0 192.168.0.254
清空路由表 route -f 清除路由表中的所有条目,恢复到默认路由设置。 route -f
添加静态路由 route -p add 添加永久路由,表示该路由条目将被保留在路由表中,即使系统重启后也不会丢失。 route -p add 192.168.1.0 mask 255.255.255.0 192.168.0.1
查看特定路由 route print <destination> 根据目标地址查看指定的路由条目。 route print 192.168.1.0
网络接口信息 route print -4 或 route print -6 显示 IPv4 或 IPv6 地址路由信息。 route print -4

各命令功能解释:

  1. 查看路由表:route print

    • 用于显示当前系统中的路由表,显示的信息包括网络接口、路由条目、网关和子网掩码等。通过该命令可以获得当前系统的所有路由配置。
    • 例子:route print 显示当前的路由表内容。
  2. 添加路由:route add

    • 向路由表添加新的路由条目。需要指定目标网络、子网掩码、网关、接口等。此操作会更新当前路由表并添加新的路由条目。
    • 例子:route add 192.168.1.0 mask 255.255.255.0 192.168.0.1 添加到 192.168.1.0/24 网络的路由,网关为 192.168.0.1。
  3. 删除路由:route delete

    • 用于从路由表中删除指定的路由条目。可以根据目标网络、网关等进行删除。
    • 例子:route delete 192.168.1.0 删除到 192.168.1.0 网络的路由条目。
  4. 修改路由:route change

    • 用于修改现有路由条目的属性。通常用于更改网关、目标地址或其他参数。
    • 例子:route change 192.168.1.0 mask 255.255.255.0 192.168.0.254 将 192.168.1.0/24 网络的网关修改为 192.168.0.254。
  5. 清空路由表:route -f

    • 清除路由表中的所有条目。此操作会删除所有用户添加的路由条目,恢复为默认设置。
    • 例子:route -f 清空所有路由条目。
  6. 添加永久路由:route -p add

    • 用于添加永久路由条目,即使系统重启,路由表中的这条路由依然存在。这对于需要在系统重启后持续有效的路由条目非常有用。
    • 例子:route -p add 192.168.1.0 mask 255.255.255.0 192.168.0.1 永久添加到 192.168.1.0/24 网络的路由,网关为 192.168.0.1。
  7. 查看特定路由:route print <destination>

    • 查看指定目标地址的路由条目。此命令可以帮助快速定位到特定网络的路由条目。
    • 例子:route print 192.168.1.0 查看目标为 192.168.1.0 的路由。
  8. IPv4/IPv6 路由查看:route print -4 和 route print -6

    • 显示仅与 IPv4 或 IPv6 协议相关的路由信息,帮助区分 IPv4 和 IPv6 路由表。
    • 例子:route print -4 查看所有的 IPv4 路由条目。

小结:

route 命令是 Windows 中管理路由表的重要工具。它允许用户查看、添加、删除、修改路由条目,并且提供了额外的功能如添加永久路由和清空路由表。通过合理使用这些命令,用户可以灵活地管理和调整计算机的网络路由。

 

PowerShell 脚本来添加、删除、修改和查看静态路由。以下是一些示例:

  1. 添加静态路由:

    powershellCopy Code
    New-NetRoute -DestinationPrefix "目标网络/子网掩码" -NextHop "网关"

    示例:

    powershellCopy Code
    New-NetRoute -DestinationPrefix "192.168.1.0/24" -NextHop "192.168.0.1"
  2. 删除静态路由:

    powershellCopy Code
    Remove-NetRoute -DestinationPrefix "目标网络/子网掩码" -NextHop "网关"

    示例:

    powershellCopy Code
    Remove-NetRoute -DestinationPrefix "192.168.1.0/24" -NextHop "192.168.0.1"
  3. 修改静态路由: 在 PowerShell 中修改静态路由通常是先删除旧路由,然后再添加新路由。你可以按照上述删除和添加静态路由的步骤来进行修改。

  4. 查看静态路由:

    powershellCopy Code
    Get-NetRoute

    这将列出系统上的所有路由信息,包括静态路由和动态路由。

使用 PowerShell 脚本可以实现自动化管理静态路由的需求,尤其适用于需要大量操作或集成到自动化工作流程中的情况。

 

在 Windows 中,你可以使用 route 命令来添加、删除、修改和查看静态路由。下面是每个操作的具体命令:

  1. 添加静态路由: 使用以下命令添加静态路由:

    Copy Code
    route add <目标网络> mask <子网掩码> <网关>

    例如:

    Copy Code
    route add 192.168.1.0 mask 255.255.255.0 192.168.0.1
  2. 删除静态路由: 使用以下命令删除静态路由:

    Copy Code
    route delete <目标网络>

    例如:

    Copy Code
    route delete 192.168.1.0
  3. 修改静态路由: 在 Windows 中,修改静态路由通常是先删除旧路由,然后再添加新路由。你可以按照上述删除和添加静态路由的步骤来进行修改。

  4. 查看静态路由: 使用以下命令查看当前系统上的静态路由:

    Copy Code
    route print

    这会显示系统上的所有路由信息,包括静态路由和动态路由。

请注意,在使用这些命令时需要以管理员权限打开命令提示符或 PowerShell。这些命令可以让你管理 Windows 中的静态路由,以满足你的网络需求。

 

CMD 批处理来制作菜单,以便使用 route 命令来添加、删除、修改和查看静态路由的示例:

Copy Code
@echo off
:menu
cls
echo --- 静态路由管理菜单 ---
echo 1. 添加静态路由
echo 2. 删除静态路由
echo 3. 修改静态路由
echo 4. 查看静态路由
echo 5. 退出

set /p choice=请输入选项数字:

if "%choice%"=="1" goto add_route
if "%choice%"=="2" goto delete_route
if "%choice%"=="3" goto modify_route
if "%choice%"=="4" goto view_route
if "%choice%"=="5" goto end

:add_route
cls
echo --- 添加静态路由 ---
set /p dest=请输入目标网络地址(格式如 192.168.1.0):
set /p mask=请输入子网掩码(格式如 255.255.255.0):
set /p gateway=请输入网关地址:
route add %dest% mask %mask% %gateway%
pause
goto menu

:delete_route
cls
echo --- 删除静态路由 ---
set /p dest=请输入要删除的目标网络地址(格式如 192.168.1.0):
set /p mask=请输入要删除的子网掩码(格式如 255.255.255.0):
set /p gateway=请输入对应的网关地址:
route delete %dest% mask %mask% %gateway%
pause
goto menu

:modify_route
cls
echo --- 修改静态路由 ---
echo 修改静态路由通常是先删除旧路由,再添加新路由。
pause
goto menu

:view_route
cls
echo --- 查看静态路由 ---
route print
pause
goto menu

:end
cls
echo 退出菜单。
pause

这个批处理脚本将显示一个菜单,其中包含添加、删除、修改和查看静态路由的选项。用户可以根据菜单提示进行操作,选择相应的选项来执行不同的操作

列出了 PowerShell 命令 和 route 命令 在路由表管理中的不同之处。重点在于 PowerShell 提供的一些命令,route 命令没有的功能。

功能 PowerShell 命令 route 命令 描述
查看路由表 Get-NetRoute route print PowerShell 提供了更多灵活的过滤与格式化选项。
查看 IPv4 路由 Get-NetRoute -AddressFamily IPv4 route print -4 PowerShell 可以方便地查看特定协议类型的路由。
查看 IPv6 路由 Get-NetRoute -AddressFamily IPv6 route print -6 PowerShell 可以方便地查看特定协议类型的路由。
查看特定目标路由 Get-NetRoute -DestinationPrefix <Destination> route print <destination> PowerShell 可以查看特定目的地的路由条目,提供更灵活的过滤能力。
添加永久路由 New-NetRoute -PolicyStore PersistentStore route -p add route 命令可以添加永久路由,但 PowerShell 提供了更多配置选项。
删除所有路由 Remove-NetRoute -AllRoutes 无 PowerShell 可以一次性删除所有路由条目,route 命令不提供此功能。
设置路由策略 New-NetRoute -PolicyStore PersistentStore 无 PowerShell 提供了对路由持久化策略的支持,route 命令没有类似功能。
修改路由条目 Set-NetRoute route change PowerShell 允许更细粒度的路由配置和修改。
清空路由表 Remove-NetRoute -AllRoutes route -f route 命令提供清空路由表的功能,但 PowerShell 提供了更多自定义选项。
支持多接口路由 New-NetRoute -InterfaceIndex <Index> 无 PowerShell 允许在添加路由时指定特定的接口,route 命令不支持此功能。
支持路由类型配置 New-NetRoute -RouteMetric <Metric> 无 PowerShell 支持设置路由的度量值(RouteMetric),route 命令不提供此功能。
添加特定路由条目到指定路由表 New-NetRoute -RoutePolicy <Policy> 无 PowerShell 可以将路由条目添加到指定的路由表,route 命令不支持此功能。
查看网络接口配置 Get-NetAdapter 无 PowerShell 可以查看网络接口信息,方便管理路由的接口。
路由表以对象形式返回数据 Get-NetRoute 返回对象格式 route print 以文本格式显示路由表 PowerShell 命令返回结构化对象,适合进一步脚本化处理。
支持 IPv6 路由配置 完全支持 IPv6 路由的管理 route 命令主要用于 IPv4,IPv6 功能有限 PowerShell 在 IPv6 配置上提供了更好的支持,适合现代网络环境。

 

  • route 命令 是一个传统的路由表管理工具,功能简单,适用于一些基本的路由管理操作。
  • PowerShell 命令 提供了更强大的功能,尤其是在多接口管理、持久化路由策略、精细化配置和脚本自动化等方面。PowerShell 命令不仅支持基本的路由管理,还能够管理路由表的策略、接口以及 IPv6 路由等,提供更灵活、细致的控制。

如果需要更复杂的路由表操作或在自动化脚本中使用,PowerShell 是更强大的工具,而 route 命令则适用于简单的手动管理。

 

PowerShell 路由表管理命令与 route 命令的对比表

Windows 提供了 route 命令和 PowerShell 中的 New-NetRoute, Get-NetRoute, Remove-NetRoute, Set-NetRoute 等命令来管理路由表。下面是它们的功能对比表。

功能 PowerShell 命令 route 命令 描述
查看路由表 Get-NetRoute route print 查看当前的路由表,Get-NetRoute 在 PowerShell 中以对象的形式返回数据。
添加路由 New-NetRoute route add 向路由表中添加新路由。New-NetRoute 使用更详细的参数。
删除路由 Remove-NetRoute route delete 从路由表中删除指定的路由。
修改路由 Set-NetRoute route change 修改现有的路由条目。PowerShell 提供更细致的选项进行更复杂的配置。
添加永久路由 New-NetRoute -PolicyStore PersistentStore route -p add 添加永久路由,-PolicyStore PersistentStore 可以确保路由持久化。
清空路由表 Remove-NetRoute -AllRoutes route -f 清空路由表中的所有条目。
查看特定路由 Get-NetRoute -DestinationPrefix <Destination> route print <destination> 查看特定目标的路由条目。
查看IPv4路由 Get-NetRoute -AddressFamily IPv4 route print -4 查看 IPv4 路由。
查看IPv6路由 Get-NetRoute -AddressFamily IPv6 route print -6 查看 IPv6 路由。
显示路由表信息格式 `Get-NetRoute Format-Table` route print

命令功能详细对比

  1. 查看路由表:

    • PowerShell: 使用 Get-NetRoute 获取当前系统的所有路由信息,默认情况下返回 IPv4 和 IPv6 路由。可以通过管道和 Format-Table 等命令来定制输出格式。
      • 例子:Get-NetRoute 返回当前系统的所有路由。
    • route 命令: 使用 route print 显示系统的路由表,包括 IPv4 和 IPv6 的路由信息。
      • 例子:route print 显示路由表。
  2. 添加路由:

    • PowerShell: 使用 New-NetRoute 命令添加新路由。需要指定目标网络、子网掩码、网关、接口等信息。
      • 例子:New-NetRoute -DestinationPrefix "192.168.1.0/24" -NextHop "192.168.0.1" -InterfaceIndex 12
    • route 命令: 使用 route add 添加新的路由条目。
      • 例子:route add 192.168.1.0 mask 255.255.255.0 192.168.0.1
  3. 删除路由:

    • PowerShell: 使用 Remove-NetRoute 删除指定的路由条目。
      • 例子:Remove-NetRoute -DestinationPrefix "192.168.1.0/24"
    • route 命令: 使用 route delete 删除指定的路由条目。
      • 例子:route delete 192.168.1.0
  4. 修改路由:

    • PowerShell: 使用 Set-NetRoute 修改现有的路由条目。这个命令提供了更细粒度的控制,允许修改多个属性,如目标地址、网关、接口等。
      • 例子:Set-NetRoute -DestinationPrefix "192.168.1.0/24" -NextHop "192.168.0.254"
    • route 命令: 使用 route change 修改现有的路由条目。
      • 例子:route change 192.168.1.0 mask 255.255.255.0 192.168.0.254
  5. 添加永久路由:

    • PowerShell: 使用 New-NetRoute 并结合 -PolicyStore PersistentStore 参数来确保路由永久保存。
      • 例子:New-NetRoute -DestinationPrefix "192.168.1.0/24" -NextHop "192.168.0.1" -PolicyStore PersistentStore
    • route 命令: 使用 route -p add 来添加永久路由。
      • 例子:route -p add 192.168.1.0 mask 255.255.255.0 192.168.0.1
  6. 清空路由表:

    • PowerShell: 使用 Remove-NetRoute -AllRoutes 清空路由表中的所有条目。
      • 例子:Remove-NetRoute -AllRoutes
    • route 命令: 使用 route -f 清空路由表。
      • 例子:route -f
  7. 查看 IPv4/IPv6 路由:

    • PowerShell: 可以使用 Get-NetRoute -AddressFamily IPv4 查看 IPv4 路由,或使用 Get-NetRoute -AddressFamily IPv6 查看 IPv6 路由。
      • 例子:Get-NetRoute -AddressFamily IPv4 查看 IPv4 路由。
    • route 命令: 使用 route print -4 查看 IPv4 路由,route print -6 查看 IPv6 路由。
      • 例子:route print -4
  8. 查看特定路由:

    • PowerShell: 使用 Get-NetRoute -DestinationPrefix <Destination> 查看特定目标的路由条目。
      • 例子:Get-NetRoute -DestinationPrefix "192.168.1.0/24"
    • route 命令: 使用 route print <destination> 查看特定目标的路由条目。
      • 例子:route print 192.168.1.0

 

  • route 命令 是较老的命令行工具,简单易用,适合快速管理路由表,尤其是单条路由的增删改查。
  • PowerShell 命令 提供了更强大的功能和灵活性,能够处理更复杂的路由配置,并且能以对象形式返回数据,便于进一步操作和脚本化。对于需要高级网络配置和自动化的环境,PowerShell 提供了更多的控制选项。

PowerShell 提供的命令不仅支持基本的路由操作,还能处理更复杂的网络策略,例如设置持久路由、管理多个路由表等。如果你需要进行更复杂的网络配置或脚本化管理,PowerShell 是更优的选择。

posted @ 2023-07-18 08:31  suv789  阅读(3776)  评论(0)    收藏  举报