Изменить DNS с помощью скрипта

Мне нужно часто менять адрес DNS-сервера, а пока я делаю это, открыв "центр управления сетями и общим доступом" - "подключение по локальной сети" - свойства - ipv4 - а затем введите номера DNS.

есть ли быстрый способ сделать это? Можно ли сделать это с помощью пакетного файла или сценария powershell? Есть ли встроенная консольная команда для изменения DNS?

16
задан Endy Tjahjono
15.02.2023 5:52 Количество просмотров материала 3127
Распечатать страницу

6 ответов

основное значение DNS:

netsh interface ipv4 set dns "Local Area Connection" static 192.168.0.2

среднее значение:

netsh interface ipv4 add dns "Local Area Connection" 192.168.0.3 index=2

который отлично работает, если имя соединения правильно. Если имя не "Подключение по локальной сети", то он не будет работать. Если вы используете XP, вам нужно изменить "ipv4" на "ip". IPv6 также можно использовать.

задать маску подсети, IP-адрес и шлюз:

netsh interface ipv4 set address name="Local Area Connection" source=static addr=192.168.1.10 mask=255.255.255.0 gateway=192.168.0.1

чтобы найти сетевое подключение, вы можете использовать ipconfig из командной строки. Но вы также можете использовать следующие для сокращенного результата ipconfig:

ipconfig | find /I "Ethernet adapter"

С помощью приведенного выше ipconfig cmd мы можем цикл через соединение (исходный код) и установите dns-серверы:

:: Set primary and alternate DNS for IPv4 on Windows Server 2000/2003/2008 & 
:: Windows XP/Vista/7
@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET adapterName=

FOR /F "tokens=* delims=:" %%a IN ('IPCONFIG ^| FIND /I "ETHERNET ADAPTER"') DO (
SET adapterName=%%a

REM Removes "Ethernet adapter" from the front of the adapter name
SET adapterName=!adapterName:~17!

REM Removes the colon from the end of the adapter name
SET adapterName=!adapterName:~0,-1!

netsh interface ipv4 set dns name="!adapterName!" static 192.168.0.2 primary
netsh interface ipv4 add dns name="!adapterName!" 192.168.0.3 index=2
)

ipconfig /flushdns

:EOF
36
отвечен Logman 2023-02-16 13:40

также на использование DNS-адреса DHCP-сервер:

netsh interface ipv4 set dns "Local Area Connection" dhcp
8
отвечен mmm 2023-02-16 15:57

С помощью Powershell скрипт в Windows 8 или 2012, Вы можете установить значения, как это:

Set-DnsClientServerAddress -InterfaceAlias Wi-Fi -ServerAddresses "1.1.1.1","2.2.2.2"

здесь wi-Fi - название интересующего вас интерфейса. Вы можете перечислить интерфейсы, выполнив:

Get-NetAdapter

для сброса DNS-адресов используйте DHCP:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses

на на этой странице чтобы увидеть полное описание.

обратите внимание, что comandlets, используемые здесь, являются не доступны в предыдущих версии, такие как Windows 7.

6
отвечен Juanal 2023-02-16 18:14

добавление исправления в версию Logman для WinXP (SP3 иврит), похоже, что нужно удалить 2 символа в конце, поэтому добавил" глобальный " вид исправления для любого другого странного случая.

:: Set primary and alternate DNS for IPv4 on Windows Server 2000/2003/2008 & Windows XP/Vista/7
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET adapterName=

FOR /F "tokens=* delims=:" %%a IN ('IPCONFIG ^| FIND /I "ETHERNET ADAPTER"') DO (
SET adapterName=%%a

REM Removes "Ethernet adapter" from the front of the adapter name
SET adapterName=!adapterName:~17!

REM WinXP Remove some weird trailing chars (don't know what they are)
FOR /l %%a IN (1,1,255) DO IF NOT "!adapterName:~-1!"==":" SET adapterName=!adapterName:~0,-1!

REM Removes the colon from the end of the adapter name
SET adapterName=!adapterName:~0,-1!
echo !adapterName!
GOTO:EOF
netsh interface ip set dns name="!adapterName!" static x.x.x.x primary
netsh interface ip add dns name="!adapterName!" x.x.x.x index=2
)

http://pastebin.com/9mbMR7sy

1
отвечен Sniffleh 2023-02-16 20:31

этот ответ скопирован из XP1 здесь. Если XP1 хотел бы опубликовать этот ответ, Пожалуйста, сделайте это, и я удалю свой ответ.

вот еще один способ изменить DNS с помощью WMIC (Windows Management Instrumentation командной строки).

команды должны быть запущены от имени администратора, чтобы применить.

очистить DNS-сервера:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ()

установить 1 DNS-сервер:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("8.8.8.8")

установить 2 DNS сервера:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("8.8.8.8", "8.8.4.4")

установить 2 DNS сервера на конкретном сетевом адаптере:

wmic nicconfig where "(IPEnabled=TRUE) and (Description = 'Local Area Connection')" call SetDNSServerSearchOrder ("8.8.8.8", "8.8.4.4")

другой пример настройки списка поиска доменов:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")
0
отвечен Nathan 2023-02-16 22:48

вот ваш новый друг: QuickSetDNS, NirSoft, удивительно, как обычно.

screenshot

его также можно использовать в командной строке:) с этими преимуществами перед netsh:

  • более простой синтаксис, в частности для установки альтернативного сервера
  • автоматически запрашивает повышение привилегий



несколько предостережений:

  • поддерживает только установку IPv4, не IPv6
  • в командной строке должен использоваться UUID адаптера, а не понятное имя (например, "подключение по локальной сети") С QuickSetDNS 1.21, имена связи также поддерживаются ;)
0
отвечен Gras Double 2023-02-17 01:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх