web-dev-qa-db-ja.com

スクリプトでDNSを変更する

私は頻繁にDNSサーバーのアドレスを変更する必要があります、そして今のところ私は「ネットワークと共有センター」 - 「ローカルエリア接続」 - プロパティ - ipv4 - を開いてそれからDNS番号を入力します。

もっと早くする方法はありますか?バッチファイルやpowershellスクリプトを使ってできますか? DNSを変更するための組み込みのコンソールコマンドはありますか?

29
Endy Tjahjono

プライマリ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

ネットワーク接続を見つけるには、cmd行から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
38
Logman

DHCPサーバから提供されたDNSアドレスを使用する場合も同様です。

netsh interface ipv4 set dns "Local Area Connection" dhcp
8
mmm

Windows 8または2012でPowershellスクリプトを使用すると、次のように値を設定できます。

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などの以前のバージョンでは使用できません。

6
Juanal

これがあなたの新しい友達です: QuickSetDNS 、NirSoftによる、いつものように素晴らしい。

screenshot

それはまたコマンドラインで使用することができます:) netsh上のこれらの利点と:

  • 特に代替サーバーを設定するための、より簡単な構文
  • 自動的に特権の昇格を要求する


いくつか注意点があります。

  • iPv6の設定ではなく、IPv4の設定のみをサポート
  • コマンドラインでは、フレンドリ名ではなく、アダプタのUUIDを使用する必要があります(例: "ローカルエリア接続")。 QuickSetDNS 1.21以降、接続名もサポートされています。
3
Gras Double

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

この答えはXP1 からここ にコピーされます。 XP1がこの回答を投稿したい場合は、回答を投稿してください。回答を削除します。

WMIC(Windows Management Instrumentation Command-line)を使用してDNSを変更するもう1つの方法があります。

コマンドを適用するには管理者として実行する必要があります。

DNSサーバーを消去します。

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

DNSサーバーを1つ設定します。

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