PowerShell: просмотр mx-записей

PowerShell LogoЕсли приходится поддерживать несколько DNS-зон, то можно это делать вручную, так как много времени их поддержка занимать не будет. А что делать если таких зон несколько сотен? Сидеть и вручную их перебирать может занять очень много времени, а следовательно нужно как-то автоматизировать процесс. Задачу упростим следующим образом. Предположим, нам надо получить с нашего DNS-сервера все MX-записи, находящиеся в DNS-зонах которые поддерживаются этим сервером.

К сожалению стандартного командлета для доступа к DNS-серверу я не нашёл. После некоторых поисков нашёл сторонний командлет Get-Dns, который устанавливается как отдельная оснастка в PoSh. Сам командлет можно взять здесь. Установка происходит следующим образом:

PS D:\distr\PoshNet\>Extract-Archive PoshNet.zip
PS D:\distr\PoshNet\>.Install.ps1 PoshNet.dll
PS D:\distr\PoshNet\> Add-PSSnapin PoshNet
PS D:\distr\PoshNet\> Get-Command -PSSnapin PoshNet
CommandType  Name     Definition
-----------  ----     ----------
Cmdlet       Get-Dns  Get-Dns [-Name] [[-Type] ]...

Теперь осталось попробовать получить список только своих (не факт, что в поддерживаемых зонах используются свои почтовые серверы) mx-серверов. У меня это получилось примерно следующим образом:

(dir dns-serverc$windowssystem32dns*.dns -Name) |
ForEach-Object { $_ -replace ".dns", "" } | Get-Dns -Type MX -DnsServers dns-server |
select -expand Answers | Where-Object {$_.record.exchange -like "*main-domain.com."} |
ft Name, Type, Record -auto

Как известно DNS-сервер от Microsoft хранит зоны в виде файлов в папке %systemdrive%windowssystem32dns с именем совпадающим с именем домена и с расширением dns. В первой части мы получаем от нашего DNS-сервера (dns-server) имена всех этих файлов, затем убираем у них расширение .dns и получаем имена зон, которые поддерживает сервер. Далее начинает работать наш новый командлет, который подключается к нашему DNS-серверу и для полученных на первых шагах зонах получает MX-записи и оставляет только те, которые находятся в нашем основном домене. И в конце выводит их в виде таблички. Что здесь важно. Первую часть надо обязательно поставить в скобки, так как процес считывания имён файлов обязательно должен дойти до конца, прежде чем скрипт продолжит работать дальше, и нужно иметь ввиду, что имена серверов пишутся обязательно с точкой на конце.

1 thought on “PowerShell: просмотр mx-записей

  1. Спасибо за подробный инструктаж. Пользовался вашими советами…проблем при просмотре не возникло.

Leave a Reply

Your email address will not be published. Required fields are marked *