我遇到的情况是需要将新的网络路由部署到具有不同网络路由等的多个环境中的几千台服务器。我想编写一个由 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/