3

У меня есть виртуальная машина в моей сети в качестве шлюза, который я иногда использую, в то время как большую часть времени я просто оставляю свои ПК настроенными на использование DHCP и просто все через маршрутизатор. Я обменивался руководствами по форме свойств соединения, но решил попробовать и сделать сценарии PowerShell, чтобы упростить процесс.

Я также отключаю IPv6 при маршрутизации через ВМ, но включаю его, когда использую DHCP. Чтобы переключиться на использование виртуальной машины в качестве шлюза, я использую это:

# Get the adapter to change
$wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled ='true'";

# Get current IPv4 address of host
$ip = $wmi.IpAddress[0];

# Configure adapter to use 192.168.1.135 as the default gateway
$wmi.EnableStatic($ip, "255.255.255.0");
$wmi.SetGateways("192.168.1.135", 1);
$wmi.SetDNSServerSearchOrder("192.168.1.135");

# Disable IPv6
Get-NetAdapterBinding | Where-Object {$_.ComponentID.Equals("ms_tcpip6")} | ForEach-Object {
    Disable-NetAdapterBinding -InterfaceAlias $_.Name -ComponentID ms_tcpip6
}

И это работает точно так же, как и при настройке вручную. Мое обычное сетевое подключение меняется на "NetworkName 2" в Центре управления сетями и общим доступом. Чтобы вернуться к DHCP, я запускаю этот скрипт:

# Get the adapter to change
$wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled ='true'";

# Configure adapter to use DHCP and automatic DNS
$wmi.EnableDHCP();
$wmi.SetDNSServerSearchOrder();

# Enable IPv6
Get-NetAdapterBinding | Where-Object {$_.ComponentID.Equals("ms_tcpip6")} | ForEach-Object {
    Enable-NetAdapterBinding -InterfaceAlias $_.Name -ComponentID ms_tcpip6
}

И после этого у меня есть два подключения через WiFi к моей сети: частная сеть с именем "NetworkName" и общедоступная сеть с именем "NetworkName 3". IPv6 и DHCP включены на обоих.

Что это с моим сценарием DHCP, который вызывает это? Этого не произошло, когда я снова переключился на DHCP через диалоговое окно.

Обновление: я заметил это при запуске ipconfig после переключения на DHCP:

Wireless LAN adapter Wi-Fi:

   Connection-specific DNS Suffix  . : 
   IPv6 Address. . . . . . . . . . . : 2001:48f8:1042:732:889c:d2c1:37c9:804e
   Temporary IPv6 Address. . . . . . : 2001:48f8:1042:732:a085:fec9:46b9:3d8
   Link-local IPv6 Address . . . . . : fe80::889c:d2c1:37c9:804e%4
   IPv4 Address. . . . . . . . . . . : 192.168.1.141
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : fe80::4af8:b3ff:fe80:6530%4
                                       192.168.1.135
                                       192.168.1.1

Он все еще использует 192.168.1.135 в качестве шлюза вместе с моим обычным маршрутизатором - 192.168.1.1.

1 ответ1

3

Это было прокомментировано здесь. Не могли бы вы удалить шлюз с помощью этой команды после того, как адаптер получил изменения, сохраненные в $ wmi?

Remove-NetRoute -InterfaceIndex $wmi.InterfaceIndex -NextHop 192.168.1.135

В качестве альтернативы вы можете использовать netsh, как указано в той же статье:

Invoke-Expression ("netsh interface ipv4 set address index=""{0}"" source=dhcp" -f $wmi.InterfaceIndex)

Netsh ведет себя так же, как GUI.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .