我遇到的情况是需要将一个新的网络路由部署到具有不同网络路由等的多个环境中的数千台服务器。我想写一个由GPO启动的脚本,它获取用于当前配置的路由的网关地址,然后使用该网关地址为我需要添加的额外子网创建一个新路由。
一点研究发现这个解决方案的服务器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
的输出,在每个字符串中查找表示它是Default
路由的字符[a-z]
(请注意,在PowerShell中,默认情况下,这是不区分大小写的),并从字符串中删除此文本、0.0.0.0
和空格。剩下的应该是默认网关。
Nick,
根据Microsoft站点,Powershell 5.0上提供了Get-Netroute cmdlet。