PowerShell, DNS, Windows
Get-DnsServerZone
Obtiene un listado de Zonas creadas en el servidor DNS
Windows almacena los registros de las zonas (dominios) en las siguiente ruta: C:\Windows\System32 por lo que es importante respaldar los archivos contenidos en esa ruta, antes de cualquier modificacion y asi poder tener un punto de retorno.
Agregar registros
Add-DnsServerResourceRecordMX -Preference 10 -Name «.» -TimeToLive 01:00:00 -MailExchange «URL» -ZoneName «DOMINIO.COM»
CREAR REGISTRO MX EN TODAS LAS ZONAS (DOMINIOS)
Get-DnsServerZone | where-object -property IsAutoCreated -ieq «» | Foreach-object -process {Add-DnsServerResourceRecordMX -Preference 50 -Name «.» -TimeToLive 01:00:00 -MailExchange «URL» -ZoneName $_.ZoneName}
Explicación:
Get-DnsServerZone.- nos proporciona todos las zonas o dominios que estan configurados en el servidor DNS de windows
where-object -property IsAutoCreated -ieq «».- Selecciona los dominios que fueron creados manualmente, existen zonas que son creadas automaticamente en la cracion del servicio DNS por ejemplo:
0.in-addr.arpa
127.in-addr.arpa
255.in-addr.arpa
Foreach-object -process {Add-DnsServerResourceRecordMX -Preference 50 -Name «.» -TimeToLive 01:00:00 -MailExchange «URL» -ZoneName $_.ZoneName}.- Genera un bucle para cada elemento encontrado en el paso anterior que corresponde a las zonas configuradas. Para cada Iteracion el nombre de la zona se almacena en la variable $_.ZoneName, los datos a tener en cuenta son
Preference: corresponde a la prioridad del registro, entre menor sera mayor la prioridad y visceversa
MailEchange: es la direccion del servidor encargado de enviar el correo, puede ser una IP o un registro A
ZoneName: corresponde a la zona o dominio en donde se va a agregar el registro MX
CREAR REGISTRO TXT EN TODAS LAS ZONAS (DOMINIOS)
Get-DnsServerZone | where-object -property IsAutoCreated -ieq «» | Foreach-object -process {Add-DnsServerResourceRecord -TXT -DescriptiveText «v=spf1 XXX.XXX.XXX.XXX include:_spf.google.com ~all» -Name «.» -zonename $_.ZoneName}
BORRADO DE REGISTROS EN TODAS LAS ZONAS (DOMINIOS)
Get-DnsServerZone | Foreach-object -process {Remove-DnsServerResourceRecord -name «test» -Zonename $_.ZoneName -RRType «TXT»}
Get-DnsServerZone | select-object -Property ZoneName, IsAutoCreated | where-object -property IsAutoCreated -ieq «» | Foreach-object -process {Remove-DnsServerResourceRecord -name «test» -Zonename $_.ZoneName -RRType «TXT»}
-RRType: parametro para definir que tipo de registro se va a eliminar,
-Name; aqui definimos el nombre del registro a eliminar
LISTADO DE REGISTROS MX, TXT, A, ETC.
Get-DnsServerZone | foreach-object -process {Get-DnsServerResourceRecord -Name «.» -ZoneName $_.ZoneName -RRType «TXT»}
Get-DnsServerResourceRecord -Name «.» -ZoneName «DOMINIO.COM» -RRType «MX»