Как получить IP-адрес DNS-шлюза по умолчанию для активного соединения и установить его в переменную, используя пакетный файл Windows 10? - PullRequest
0 голосов
/ 28 марта 2020

Вот настройки,

  • Первичный 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

1 Ответ

0 голосов
/ 29 марта 2020

Я думаю, что получил, но я открыт для идей о том, как сделать это лучше или если есть очевидные fl aws.

@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 iptrue=false
IF %dgateway%==192.168.1.1 SET iptrue=true
IF %dgateway%==192.168.2.1 SET iptrue=true
IF %dgateway%==192.168.3.1 SET iptrue=true
IF %iptrue%==true (
 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...