Для добавления непостоянного маршрута вы можете сделать следующее:
$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
Объяснение:
- Splatting isиспользуется здесь (
@Params
) просто для того, чтобы сделать команды *-NetRoute
более читабельными. - Вам нужно только обновить
$InterfaceAlias
с помощью имени вашего интерфейса и обновить DestinationPrefix
с использованием нотации CIDR. $null =
используется для подавления вывода New-NetRoute
и может быть удален, если вы хотите увидеть вывод. - Если вы хотите, чтобы маршрут сохранялся при перезагрузке, удалите
PolicyStore = 'ActiveStore'
строка. По умолчанию команда New-NetRoute
добавляет маршрут в активное хранилище (не постоянное) и постоянное хранилище. - При обращении к
.IPv4DefaultGateway
команды Get-NetIPConfiguration $InterfaceAlias
возвращает свойство NextHop
, необходимое дляNew-NetRoute
. - Псевдонимы интерфейса могут совместно использоваться несколькими индексами. Вы видите это, когда у вас включены IPv4 и IPv6. Разница между псевдонимами общего интерфейса IPv4 и IPv6 заключается в индексе интерфейса. Поскольку в наших командах мы специально нацелены на семейство адресов IPv4, нам не нужно указывать или запрашивать индекс.
Примечание: Команда 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
для вашей ситуации.