Пример:
Мне нужно изменить все мои CNAME, указывающие на server1.domain.local, на server2.domain.local.
Я знаю, что могу создать server1.domain.local как другой CNAME, но я бы предпочел просто найти все записи и изменить их по отдельности.
Как я могу найти все ссылки на server.domain.local во всех зонах прямого просмотра?
В dnscmd
утилита из средств поддержки Windows, вероятно, ваш лучший выбор. Вы можете получить список всех зон DNS с помощью команды: dnscmd [servername] /EnumZones
. Вы можете перечислить все записи CNAME в каждой зоне с помощью команды: dnscmd [servername] /EnumRecords [zone name] . /TYPE CNAME
.
Теоретически вы можете связать эти два вместе в скрипте, обработать вывод и автоматически внести нужные изменения (также используя dnscmd
с /RecordDelete
и /RecordAdd
команды). Это упражнение я оставлю вам (пока).
Изменить: Хорошо - я не смог устоять. Вот этот сценарий. Это будет только echo
команды, которые действительно вносят изменения. Если он делает то, что вы хотите, вы можете потянуть echo
командует и пусть рвется.
@echo off
set SERVER_TO_REPLACE=server1.domain.com
set REPLACEMENT_VALUE=server2.domain.com
rem Quick and dirty list of Primary zones that aren't Reverse zones
for /F "usebackq" %%i in (`dnscmd %1 /EnumZones ^| find " Primary" ^| find /v " Rev"`) do call :process_zone %1 %%i
goto end
:process_zone
rem Quick and dirty enumeration of all CNAME records in a zone
for /F "usebackq tokens=1,3,4" %%i in (`dnscmd %1 /EnumRecords %2 . /TYPE CNAME ^| find " CNAME"`) do call :process_RR %1 %2 %%i %%j %%k
goto end
:process_RR
rem Check a record and alter it if necessary
if /I "%5" EQU "%SERVER_TO_REPLACE%" (
echo dnscmd %1 /RecordDelete %2 %3 %4 %5 /f
echo dnscmd %1 /RecordAdd %2 %3 %4 %REPLACEMENT_VALUE%
)
:end
Это интегрированные зоны AD? Если нет, вы можете вручную отредактировать файлы зон с помощью блокнота (найти и заменить), а затем перезагрузить зоны.
РЕДАКТИРОВАТЬ
Виноват. Я не увидел в вашем заголовке, что это интегрированные зоны AD. Вы по-прежнему можете использовать метод, который я опубликовал, изменив зоны на зоны, не интегрированные в AD, отредактировав файлы зон, которые будут созданы, а затем изменив их обратно на зоны, интегрированные в AD. Это немного похоже на взлом, так что это может быть не тот метод, который вы бы предпочли использовать.
Один из способов - запустить nslookup
с одного из ваших DNS-серверов или системы, которой разрешено выполнять передачу зоны. С участием nslookup
сделать ls > file
который запросит копию базы данных зоны и сохранит ее в текстовый файл. Затем воспользуйтесь функцией поиска в вашем любимом текстовом редакторе, чтобы найти то, что нужно исправить.