Змінення DNS за допомогою сценарію


29

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

Чи є швидший спосіб це зробити? Чи можу я це зробити з пакетним файлом або сценарієм повноважень? Чи є вбудована команда консолі для зміни DNS?

Відповіді:


38

Основне значення 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 з рядка cmd. Але для скороченого результату 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

3
Відмінна відповідь. Ви повинні включити джерела таких речей, як Котирування та Код.
Ƭᴇcʜιᴇ007

8

Також використовувати DNS-адреси, надані сервером DHCP:

netsh interface ipv4 set dns "Local Area Connection" dhcp

плюс у випадку, якщо ви хочете скинути адресу / маску / шлюз до таких DHCP: netsh interface ipv4 set address name = "Місцеве з'єднання" source = dhcp
hello_earth

6

Використовуючи сценарій 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

Перейдіть на цю сторінку, щоб побачити повний опис.

Зауважте, що використовувані тут комунікати недоступні в попередніх версіях, наприклад, Windows 7.


лаконічний, працює як шарм. Дякую :) Особливо корисно в AWS Opsworks!
Ганеш Хегде

3

Ось ваш новий друг: QuickSetDNS , автор NirSoft, дивно, як завжди.

скріншот

Його також можна використовувати в командному рядку :) з цими перевагами перед netsh:

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


Всього кілька застережень:

  • підтримує лише налаштування IPv4, а не IPv6
  • у командному рядку слід використовувати UUID адаптера, а не дружнє ім’я (наприклад, "Місцеве з'єднання") оскільки QuickSetDNS 1.21, імена підключень також підтримуються;)

ось зразок з відкритим кодом, який використовує той самий підхід, як і вище: codeproject.com/Articles/20639/…
Top-Master

1

Додаючи виправлення до версії 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


0

Ця відповідь скопійована з XP1 тут . Якщо XP1 хотів би опублікувати цю відповідь, будь ласка, зробіть це, і я видалю свою відповідь.

Ось ще один спосіб змінити DNS за допомогою WMIC (командний рядок управління інструментарією Windows).

Команди повинні бути запущені як адміністратор, щоб застосувати.

Очистити сервери 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")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.