Записи DNS обычно управляются динамически вашим DNS-сервером. Однако иногда может возникнуть необходимость вручную создать, изменить или удалить различные типы записей DNS. Или даже добавить различные задачи DNS в автоматизированные сценарии. В таких случаях на помощь приходят командлеты PowerShell DNS.
В этом блоге есть сопровождающее видео, созданное участником TechSnips, Дэвидом Лэмбом. При желании можете посмотреть его или, если предпочитаете текст, продолжайте чтение!
Просмотр записей DNS с помощью командлетов PowerShell DNS
Вы можете просмотреть все ресурсные записи для заданной зоны DNS, просто используя командлет PowerShell DNS Get-DnsServerResourceRecord
. Используя этот командлет, вы можете указать параметр ZoneName
, который выведет все записи DNS в этой зоне.
Как видно ниже, это генерирует довольно длинный список записей.

Это поведение подчеркивает одно из преимуществ этого конкретного командлета перед графической консолью DNS. Вид предоставляет вам все записи для этой зоны, независимо от того, в какой папке они находятся. В графической консоли потребовалось бы довольно много времени, чтобы собрать эту информацию вместе.
Сейчас немного уменьшим этот список. Используя тот же самый cmdlet, добавление параметра RRType
для поиска записей A (хосты IPv4) и фильтрация записей, где Время жизни (TTL) больше 15 минут, дает нам более управляемый список. Вы можете использовать cmdlet Where-Object
для фильтрации по множеству различных свойств записи DNS.

Пойдем еще дальше, вы можете также искать записи в другой DNS-зоне и даже на разных DNS-серверах.
В приведенном ниже примере мы будем искать записи A в зоне canada.corp.ad на DNS-сервере DC03

Добавление и удаление записей хоста A
Чтобы добавить запись хоста, вам нужно использовать PowerShell DNS cmdlet Add-DnsServerResourceRecordA
. В приведенном ниже примере вам нужно добавить запись хоста для нового принтера, который вы добавляете в сеть. Он будет добавлен в зону corp.ad с именем reddeerprint01, и его IP-адрес – 192.168.2.56.

Если оказывается, что вам нужно удалить запись, например, если принтер был выведен из эксплуатации, вы можете использовать следующий код для удаления только что созданной записи хоста:
Добавление и удаление записей хоста AAAA
Также так же легко добавить запись хоста IPv6. Конечно, эти записи немного отличаются, так как они указаны как AAAA записи. Вы могли заметить, что теперь мы используем командлет PowerShell DNS Add-DnsServerResourceRecordAAAA
. Это незначительное изменение, но важное.
Добавьте запись в зону corp.ad для нового сервера Интранета IT по адресу fc00:0128, а затем быстро проверьте, что она была создана с помощью следующей команды.

Добавление обратных записей поиска (PTR)
С помощью командлетов PowerShell DNS вы также можете добавлять записи PTR. Обратная запись поиска позволяет клиенту запрашивать у DNS-сервера имя хоста для предоставленного IP-адреса.
Создание записи PTR – относительно простой процесс, но есть одна важная информация, которую вам нужно будет знать, прежде чем начать добавлять записи PTR. Обратные зоны поиска не создаются по умолчанию. Вам нужно будет настроить обратную зону поиска перед добавлением записей. К счастью, это относительно легко сделать.
Создание DNS-зоны
Используйте командлет PowerShell DNS Add-DnsServerPrimaryZone
для создания новой DNS-зоны. В этом случае, поскольку вы создаете обратную зону поиска, укажите сетевой идентификатор.
В этом примере я также выбрал установить область репликации на всё лес AD и я явно указал DC03 как предпочтительный DNS-сервер.

Теперь, когда обратная зона поиска на месте, вы можете добавить запись PTR для нового принтера под названием CYQF-Printer-01.canada.corp.ad с IP-адресом 192.168.2.56. Поскольку эта запись предназначена для зоны canada.corp.ad, вы будете настраивать DNS-сервер DC03.
Теперь, когда зона создана, давайте создадим запись PTR с использованием команды Add-DnsServerResourceRecordPtr
. При использовании этой команды важно учесть несколько моментов.
- Вам необходимо указать имя зоны, используя идентификатор сети в обратном порядке, а затем добавить .in-addr.arpa. Так что для нашей 192.168.2.0/24 сети имя зоны будет 2.168.192.in-addr.arpa.
- Параметр
Name
– это часть имени хоста IP-адреса. Для нашего принтера с IP-адресом 192.168.2.56Name
– 56.
Как только у вас будут эти сведения, код, необходимый для создания записи PTR, относительно прост, хотя и немного длинный:

Добавление записей синонимов (CNAME)
Чтобы завершить этот учебник, создайте запись синонима хоста или запись CNAME с помощью команды Add-DnsServerResourceRecordCName
.
Эти записи позволяют указать синоним для существующей записи хоста в зоне. Это особенно полезно, например, если вы хотите предоставить вашим финансовым пользователям адрес для их веб-приложения по финансам.
Вы можете создать псевдоним с именем финансы и направить его на веб-сервер webapp25.corp.ad. Как только приложение будет перенесено на новый веб-сервер с новым именем хоста, вы измените запись CNAME, чтобы указать финансы, указывающую на новый хост. Таким образом, пользователи не должны обновлять свои закладки. Они могут продолжать получать доступ к своему приложению, используя адрес finance.corp.ad.

Если вы хотите погрузиться в DNS глубже и увидеть некоторые более продвинутые возможности, обязательно ознакомьтесь со всеми другими сообщениями о DNS здесь.
Сводка
Этим завершается наш учебник по использованию PowerShell с записями DNS. С накопленными знаниями вы теперь сможете управлять интерактивно или даже автоматизировать большие объемы записей DNS, если решите заняться этим!