DNS'yi komut dosyasıyla değiştirme


29

DNS sunucusu adresini sık sık değiştirmem gerekiyor ve şimdilik bunu 'ağ ve paylaşım merkezi' - 'yerel alan bağlantısı' - özellikler - ipv4 - açarak ve ardından DNS numaralarını yazın.

Bunu yapmak için daha hızlı bir yolu var mı? Bir toplu iş dosyası veya powershell betiği ile yapabilir miyim? DNS'yi değiştirmek için yerleşik bir konsol komutu var mı?

Yanıtlar:


38

Birincil DNS değeri:

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

İkincil değer:

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

Hangi harika çalışıyorsa bağlantı adı doğruysa. Adı "Yerel Ağ Bağlantısı" değilse, o zaman çalışmaz. Eğer XP kullanıyorsanız "ipv4" ü "ip" olarak değiştirmeniz gerekir. IPv6 da kullanılabilir.

Alt ağ maskesini, IP Adresini ve Ağ Geçidini ayarlayın:

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

Ağ bağlantısını bulmak için cmd satırından ipconfig kullanabilirsiniz. Ancak, kısaltılmış bir ipconfig sonucu için aşağıdakileri de kullanabilirsiniz:

ipconfig | find /I "Ethernet adapter"

Yukarıdaki ipconfig cmd'yi kullanarak bağlantıyı ( kaynak kodu ) geçebilir ve dns sunucularını ayarlayabiliriz:

:: 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
Mükemmel cevap Tırnaklar ve Kod gibi şeyler için kaynaklar eklemelisiniz .
Ƭᴇcʜιᴇ007

8

Ayrıca DHCP sunucusu tarafından sağlanan DNS adreslerini kullanmak için:

netsh interface ipv4 set dns "Local Area Connection" dhcp

artı adresini / maskeyi / ağ geçidini DHCP'ninkine sıfırlamak istemeniz durumunda: netsh interface ipv4 set adres adı = "Yerel Alan Bağlantısı" source = dhcp
hello_earth

6

Windows 8 veya 2012'de bir Powershell betiği kullanarak , aşağıdaki gibi değerleri ayarlayabilirsiniz:

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

Nerede wi-Fi ilgilendiğiniz arayüzün adı olan çalıştırarak arayüzleri listeleyebilir.:

Get-NetAdapter

DNS adreslerini sıfırlamak ve bunun için DHCP kullanın:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses

Açıklamanın tamamını görmek için bu sayfaya gidin .

Burada kullanılan komut dosyalarının Windows 7 gibi önceki sürümlerde bulunmadığını unutmayın.


özlü, bir cazibe gibi çalışır. Teşekkürler :) Özellikle AWS Opsworks'te çok faydalı!
Ganesh Hegde 25:15

3

İşte yeni arkadaşınız: QuickSetDNS , NirSoft tarafından her zamanki gibi muhteşem.

ekran görüntüsü

Komut satırında :) netsh'e göre şu avantajlarla da kullanılabilir:

  • özellikle alternatif sunucuyu ayarlamak için daha kolay sözdizimi
  • otomatik olarak ayrıcalık yükselmesi ister


Sadece birkaç uyarı:

  • IPv6’yı değil, yalnızca IPv4’ün
  • Komut satırında, UUID bağdaştırıcısı kullanılmalıdır, kullanıcı adı değil (örneğin, "Yerel Alan Bağlantısı") QuickSetDNS 1.21'den bu yana, bağlantı adları da desteklenir;)

işte yukarıdaki ile aynı yaklaşımı kullanan açık kaynaklı bir örnek: codeproject.com/Articles/20639/…
Top-Master

1

Logman'ın WinXP (sp3 İbranice) sürümüne bir düzeltme eklemek, sonunda 2 karakter çıkarması gerektiği gibi görünüyor, bu nedenle diğer garip durumlar için "global" bir düzeltme türü ekledi.

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

Bu cevap burada XP1'den kopyalanmıştır . Eğer XP1 bu cevabı göndermek istiyorsa, lütfen bunu yapın ve cevabımı sildim.

İşte WMIC (Windows Yönetim Araçları Komut Satırı) kullanarak DNS'yi değiştirmenin başka bir yolu.

Komutların uygulanabilmesi için yönetici olarak çalıştırılması gerekir.

DNS sunucularını temizle:

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

1 DNS sunucusu ayarla:

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

2 DNS sunucusu ayarlayın:

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

Belirli bir ağ bağdaştırıcısında 2 DNS sunucusu ayarlayın:

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

Etki alanı arama listesini ayarlamak için başka bir örnek:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.