windows - 在 Server 2008 Powershell 中提取给定路由的网关地址

标签 windows powershell windows-server-2008

我遇到的情况是需要将新的网络路由部署到具有不同网络路由等的多个环境中的几千台服务器。我想编写一个由 GPO 触发的脚本,它获取用于当前配置的路由,然后使用该网关地址为我需要添加的其他子网创建新路由。

一些研究发现这个适用于 Server 2012 的解决方案非常简单:

get-netroute -DestinationPrefix "192.168.0.1/24" | select-object -expandproperty "NextHop"

然后这只为我提供了用于网络路由“192.168.0.1/24”的网关地址。然后我可以将其输入变量以创建新路线。

在 Server 2008 R2 及以下版本中,此命令不可用,所以我想知道是否有另一种聪明的方法可以完成此操作?

最佳答案

您可以使用以下内容。在 Server 2008 R2 上测试。这只会提取默认网关,但您提到您可以使用它来创建新路由。如果适用,请在依赖它之前测试不同的操作系统本地化。

$defaultgw = (((route print 0.0.0.0 | ? {$_ -Match '0\.0\.0\.0.*[a-z]'}) -Replace '0\.0\.0\.0|[a-z]|\s+','') -Split '`r`n')[0]
$defaultgw

它所做的是获取 route print 0.0.0.0 的输出,在每个字符串中查找字符 [a-z](请注意,这是不区分大小写的PowerShell 中的默认值)表示它是 Default 路由,并从字符串中删除此文本、0.0.0.0 和空格。剩下的应该是默认网关。

关于windows - 在 Server 2008 Powershell 中提取给定路由的网关地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37055134/

相关文章:

iis-6 - 在 Win2008 R2 上禁用 TLS 1.0 会破坏我们的 IIS 网站

Powershell 2.0 脚本在 cmd.exe 中运行,但不在任务计划程序中

vba - MS Access 2010、Excel 2010、Windows Server 2008 R2 64 位 : SaveAs method of Workbook class failed

java - Windows 10 企业版 IntelliJ IDEA 中的 JDK 路径

c - 刷新通信句柄接收缓冲区?

user-interface - 在脚本运行时刷新表单上的数据的后台作业?

windows - 如何使用powershell设置文件夹的权限

windows - 如何最好地将 CString 转换为 BSTR 以将其作为 "in"参数传递给 COM 方法?

c# - 在 C# 窗口中绘制一条绝对线

powershell - 带有多个变量的PowerShell Add-Content到列