Ubah DNS dengan skrip

29

Saya perlu sering mengubah alamat server DNS, dan untuk saat ini saya melakukannya dengan membuka 'jaringan dan berbagi pusat' - 'koneksi area lokal' - properti - ipv4 - dan kemudian ketik nomor DNS.

Apakah ada cara yang lebih cepat untuk melakukannya? Bisakah saya melakukannya dengan file batch atau skrip PowerShell? Apakah ada perintah konsol bawaan untuk mengubah DNS?

Endy Tjahjono
sumber

Jawaban:

38

Nilai DNS primer:

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

Nilai sekunder:

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

Yang berfungsi dengan baik JIKA nama koneksi sudah benar. Jika namanya bukan "Sambungan Area Lokal" maka itu tidak akan berfungsi. Jika Anda menjalankan XP, Anda perlu mengubah "ipv4" menjadi "ip". IPv6 dapat digunakan juga.

Setel subnet mask, Alamat IP, dan Gateway:

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

Untuk menemukan koneksi jaringan Anda dapat menggunakan ipconfig dari baris cmd. Tetapi Anda juga dapat menggunakan yang berikut ini untuk hasil ipconfig yang disingkat:

ipconfig | find /I "Ethernet adapter"

menggunakan cmc ipconfig di atas kita dapat mengulang melalui koneksi ( kode sumber ) dan mengatur server 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
Tukang tebang kayu
sumber
3
Jawaban yang sangat bagus. Anda harus menyertakan sumber untuk hal-hal seperti Kutipan dan Kode.
Ƭᴇcʜιᴇ007
8

Juga untuk menggunakan alamat DNS yang disediakan oleh server DHCP:

netsh interface ipv4 set dns "Local Area Connection" dhcp
mmm
sumber
ditambah jika Anda ingin mengatur ulang alamat / mask / gateway ke DHCP: antarmuka netsh ipv4 set address name = "Local Area Connection" source = dhcp
hello_earth
6

Menggunakan skrip Powershell di Windows 8 atau 2012, Anda dapat menetapkan nilai seperti ini:

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

Di mana wi-Fi adalah nama antarmuka yang Anda minati. Anda dapat mencantumkan antarmuka dengan menjalankan:

Get-NetAdapter

Untuk mengatur ulang alamat DNS dan ini menggunakan DHCP:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses

Buka halaman ini untuk melihat deskripsi lengkap.

Perhatikan bahwa comandlet yang digunakan di sini tidak tersedia di versi sebelumnya, seperti Windows 7.

Juanal
sumber
ringkas, bekerja seperti pesona. Terima kasih :) Sangat berguna untuk AWS Opsworks!
Ganesh Hegde
3

Ini teman baru Anda: QuickSetDNS , oleh NirSoft, luar biasa seperti biasa.

tangkapan layar

Ini juga dapat digunakan dalam command line :) dengan kelebihan ini di atas netsh:

  • sintaks yang lebih mudah, khususnya untuk pengaturan server alternatif
  • secara otomatis meminta peningkatan hak istimewa


Hanya beberapa peringatan:

  • hanya mendukung pengaturan IPv4, bukan IPv6
  • di baris perintah, UUID adaptor harus digunakan, bukan nama yang ramah (mis. "Sambungan Area Lokal") sejak QuickSetDNS 1.21, nama koneksi juga didukung;)
Gras Double
sumber
di sini adalah contoh sumber terbuka yang tidak menggunakan pendekatan yang sama seperti di atas: codeproject.com/Articles/20639/…
Top-Master
1

Menambahkan perbaikan ke versi Logman untuk WinXP (sp3 hebrew), sepertinya perlu menghapus 2 karakter di akhir sehingga menambahkan jenis "global" untuk kasus aneh lainnya.

:: 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

Sniffleh
sumber
0

Jawaban ini disalin dari XP1 di sini . Jika XP1 ingin memposting jawaban ini, silakan lakukan dan saya akan menghapus jawaban saya.

Berikut adalah cara lain untuk mengubah DNS dengan menggunakan WMIC (baris perintah Instrumentasi Manajemen Windows).

Perintah harus dijalankan sebagai administrator untuk diterapkan.

Hapus server DNS:

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

Set 1 server DNS:

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

Set 2 server DNS:

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

Tetapkan 2 server DNS pada adaptor jaringan tertentu:

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

Contoh lain untuk mengatur daftar pencarian domain:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")
Nathan
sumber