我有运行路由打印的日常程序,以查找新VPN连接的接口索引
然后执行ROUTE ADD {IP} MASK {MASK} IF {InterfaceIndex}
。
我认为在PowerShell中使用单个脚本会更好。
在PS中,我可以运行:
Get-NetIPInterface -InterfaceAlias "{InterfaceAlias}"
返回ifIndex。
那我不确定。
我需要跑步吗New-NetRoute
?以及如何使用IP和MASK在其中输入IfIndex?
我有运行路由打印的日常程序,以查找新VPN连接的接口索引
然后执行ROUTE ADD {IP} MASK {MASK} IF {InterfaceIndex}
。
我认为在PowerShell中使用单个脚本会更好。
在PS中,我可以运行:
Get-NetIPInterface -InterfaceAlias "{InterfaceAlias}"
返回ifIndex。
那我不确定。
我需要跑步吗New-NetRoute
?以及如何使用IP和MASK在其中输入IfIndex?
您可以执行以下操作以添加非持久性路由:
$InterfaceAlias = '{InterfaceAlias}'
$Params = @{
InterfaceAlias = $InterfaceAlias
NextHop = (Get-NetIPConfiguration -InterfaceAlias $InterfaceAlias).IPv4DefaultGateway.NextHop
AddressFamily = 'IPv4'
DestinationPrefix = '{IP}/{NetworkBits}' # Example: 192.168.100.0/24
PolicyStore = 'ActiveStore'
}
$null = New-NetRoute @Params
Get-NetRoute @Params
说明:
@Params
)的使用只是为了使*-NetRoute
命令更具可读性。$InterfaceAlias
,并使用CIDR表示法更新DestinationPrefix
。 $null =
用于禁止显示New-NetRoute
的输出,如果要查看输出,可以将其删除。PolicyStore = 'ActiveStore'
行。默认情况下,New-NetRoute
命令将路由添加到活动存储(非持久存储)和持久存储。.IPv4DefaultGateway
命令的Get-NetIPConfiguration $InterfaceAlias
,返回NextHop
所需的New-NetRoute
属性。 注意:New-NetRoute
命令必须以管理员身份运行。
其他注意事项:
如果您对CIDR表示法不满意,可以使用以下命令,这样可以使用网络掩码。
$InterfaceAlias = '{InterfaceAlias}'
$DestinationNetwork = '{DestinationIP}' # 192.168.200.0 for example
$Mask = '{MASK}' # 255.255.255.0 for example
$CIDR = "{0}/{1}" -f $DestinationNetwork,(-join ($Mask -split '\.' |% {[convert]::ToString($_,2).Trim('0')})).Length
$Params = @{
InterfaceAlias = $InterfaceAlias
NextHop = (Get-NetIPConfiguration -InterfaceAlias $InterfaceAlias).IPv4DefaultGateway.NextHop
AddressFamily = 'IPv4'
DestinationPrefix = $CIDR
PolicyStore = 'ActiveStore'
}
$null = New-NetRoute @Params
Get-NetRoute @Params
说明:此处仅根据您的情况更新$InterfaceAlias
,$DestinationNetwork
和$Mask
。