Добавить суффиксы DNS через командную строку Windows

13

На моей работе у нас есть два суффикса DNS для конкретных соединений. lhs.local и cis.local. Я пытаюсь написать командный файл, который позаботится о многих общих административных задачах, которые необходимо выполнить при развертывании компьютера, и добавление этих файлов является одной из таких задач.

Есть ли команда сделать это программно?

Крис Соболевски
источник
1
Почему вы (ab?) Используете TLD Zeroconf?
Игнасио Васкес-Абрамс
Пожалуйста, не начинайте меня, лол. Почему именно я стал инициатором нашей инициативы по созданию изображений, когда я просто поддерживаю второго уровня?
Крис Соболевски

Ответы:

8

Через этот пост

Чтобы удаленно добавить суффикс DNS к соединению TCP / IP, все, что вам нужно, это список IP-адресов и следующая команда:

wmic /USER:administrator /PASSWORD:adminpassword /node:@c:\iplist.txt nicconfig call SetDNSSuffixSearchOrder (mydomain.com)

где C:\iplist.txtсодержит список IP-адресов, разделенных строкой.

Еще один способ - добавить через реестр

reg add HKLM\System\currentcontrolset\services\tcpip\parameters /v “NV Domain” /d “mydomain.com” /f

Там есть запись Microsoft KB для того же.

Сатьяджит Бхат
источник
6
Использование вышеописанного метода reg не помогло мне. Поэтому я прочитал ссылку на КБ, в которой говорится о том, что для задания имени значения «SearchList» нет, например, «NV Domain». Использование / v SearchList сработало (обратите внимание, что это сожжет все существующие домены, поэтому убедитесь, что они есть в списке / d.
Натан Кидд
2

Основываясь на ответе Сатья и других ресурсах, я написал это:

@echo off
SETLOCAL EnableDelayedExpansion

:: Input here the additional suffix
set suffix=your.own.suffix

:: Get existing DNS suffixes
FOR /F "usebackq tokens=1,2* delims= " %%A in (`reg QUERY HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /V SearchList ^| findstr REG_SZ`) do ( 
    set OLD_DNS=%%C
)

:: Check if it starts with our suffix
set OK=NO
FOR /F "tokens=1,2* delims=," %%A in ("%OLD_DNS%") do (
    if "%%A" == "%suffix%" set OK=YES
)

:: Add our suffix first if it's not there
if "%OK%" == "NO" (
    echo Conf KO: %OLD_DNS%
    reg add HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /V SearchList /D "%suffix%,%OLD_DNS%" /F
) else (
    echo Conf OK: %OLD_DNS%
)

ipconfig /flushdns
Бенуа Даффез
источник