Вот настройки,
- Первичный DNS: Переменная, может быть 192.168.1.1, 192.168.1.2 или 192.168.1.3
- Вторичный DNS: Stati c, 172.20.16.1
На Windows 10 машинах я хочу запускать скрипт, который находит активное соединение (может переключаться между беспроводным и проводным на закрепленных ноутбуках) и заменяет вторичный DNS (172.20.16.1) на первичный DNS (переменная).
Вот где я сейчас нахожусь,
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET adapterName=
FOR /F "tokens=* delims=:" %%a IN ('IPCONFIG ^| FIND /I "ETHERNET ADAPTER"') DO (
SET adapterName=%%a
SET adapterName=!adapterName:~17!
SET adapterName=!adapterName:~0,-1!
FOR /f "tokens=2 delims=:" %%g IN ('netsh interface ip show address "!adapterName!" ^| findstr "Default"') do
set DefaultGateway=%%g
netsh interface ipv4 set dns name="!adapterName!" static 172.20.16.1 primary
netsh interface ipv4 add dns name="!adapterName!" !DefaultGateway! index=2
ipconfig /flushdns
:EOF
Часть, которая не работает, получая шлюз по умолчанию,
FOR /f "tokens=2 delims=:" %%g IN ('netsh interface ip show address "!adapterName!" ^| findstr "Default"') do
set DefaultGateway=%%g
Не уверен, что это правильный способ добавить переменную "DefaultGateway",
netsh interface ipv4 add dns name="!adapterName!" !DefaultGateway! index=2
РЕДАКТИРОВАТЬ:
I смог заставить следующее работать. Будет ли он работать как для беспроводных, так и для ethe rnet соединений и / или есть ли другие мыслимые проблемы с этим подходом?
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET dgateway=
for /f "tokens=2,3 delims={,}" %%g in ('"WMIC NICConfig where IPEnabled="True" get DefaultIPGateway /value | find "I" "') do SET dgateway=%%~g
SET adapterName=
FOR /F "tokens=* delims=:" %%a IN ('IPCONFIG ^| FIND /I "ETHERNET ADAPTER"') DO (
SET adapterName=%%a
SET adapterName=!adapterName:~17!
SET adapterName=!adapterName:~0,-1!
netsh interface ipv4 set dns name="!adapterName!" static 172.20.16.1 primary
netsh interface ipv4 add dns name="!adapterName!" %dgateway% index=2
)
ipconfig /flushdns
:EOF