Búsqueda de sitios web

Cree y administre zonas y registros DNS con PowerShell


Un administrador de Windows puede usar el buen viejo

Dnscmd

herramienta cli o módulo DNSServer para que PowerShell administre zonas y registros DNS. En este artículo, cubriremos las operaciones básicas de creación, modificación y eliminación masiva de diferentes registros o zonas de DNS mediante PowerShell.

Módulo de PowerShell del servidor DNS

El módulo DNSServer para PowerShell es parte de RSAT. En Windows 10, deberá instalar RSAT por separado, y en Windows Server puede habilitar el módulo mediante la GUI del Administrador del servidor (Herramientas de administración de roles -> Herramientas del servidor DNS).

Asegúrese de que el módulo DNSServer PowerShell esté instalado en su computadora:

Get-Module DNSServer -ListAvailable

Puede mostrar la lista de comandos en él (la versión del módulo para Windows Server 2016 tiene 134 cmdlets):

Get-Module DNSServer

Administrar zonas DNS con PowerShell

Muestre la lista de zonas DNS en su servidor (en nuestro caso, es un controlador de dominio):

Get-DnsServerZone -ComputerName dc01

Para agregar una nueva zona DNS primaria llamada a-d.site, ejecute este comando:

Add-DnsServerPrimaryZone -Name a-d.site -ReplicationScope "Forest" -PassThru

Como puede ver, se ha creado la zona DNS primaria integrada en Active Directory (isDsIntegrated=True).

Puede crear una Zona de búsqueda inversa:

Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ReplicationScope Domain

Para sincronizar una nueva zona con otros DC en el dominio, ejecute el siguiente comando:

Sync-DnsServerZone -passthru

Muestra la lista de registros en la nueva zona DNS (está vacía):

Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local

Para eliminar la zona DNS, use el comando:

Remove-DnsServerZone -Name a-d.site -ComputerName dc01

También eliminará todos los registros DNS existentes en la zona.

Administración de registros DNS con el módulo DNSServer PowerShell

Para crear un nuevo registro A para el host en la zona DNS especificada, use este comando:

Add-DnsServerResourceRecordA -Name ber-rds1 -IPv4Address 192.168.100.33 -ZoneName a-d.site -TimeToLive 01:00:00

Para agregar un registro PTR a la Zona de búsqueda inversa, puede agregar el parámetro -CreatePtr al comando anterior o crear el puntero manualmente usando el cmdlet Add-DNSServerResourceRecordPTR:

Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.a-d.site

Para agregar un alias (CNAME) para el registro A específico, ejecute este comando:

Add-DnsServerResourceRecordCName -ZoneName a-d.site -Name Ber-RDSFarm -HostNameAlias ber-rds1.a-d.site

Para cambiar (actualizar) la dirección IP en el registro A, deberá aplicar un método bastante complejo ya que no puede cambiar una dirección IP de un registro DNS directamente:

$NewADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName a-d.site -ComputerName dc01
$OldADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName a-d.site -ComputerName dc01

Luego cambie la propiedad IPV4Address del objeto $NewADNS:

$NewADNS.RecordData.IPv4Address = [System.Net.IPAddress]::parse('192.168.100.133')

Cambie la dirección IP del registro A usando el cmdlet Set-DnsServerResourceRecord:

Set-DnsServerResourceRecord -NewInputObject $NewADNS -OldInputObject $OldADNS -ZoneName a-d.site -ComputerName dc01

Asegúrese de que la dirección IP del registro A haya cambiado:

Get-DnsServerResourceRecord -Name ber-rds1 -ZoneName a-d.site

Puede mostrar la lista de registros DNS del mismo tipo utilizando el parámetro -RRType. Mostremos la lista de registros CNAME en la zona DNS especificada:

Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName a-d.site -RRType CNAME

También puede usar filtros por cualquier parámetro de registro DNS usando Where-Object. Por ejemplo, para mostrar la lista de registros A que contienen la frase rds en sus nombres de host:

Get-DnsServerResourceRecord -ZoneName a-d.site -RRType A | Where-Object HostName -like "*rds*"

Para eliminar registros DNS, se usa el cmdlet Remove-DnsServerResourceRecord.

Por ejemplo, para eliminar un registro CNAME, ejecute el comando:

Remove-DnsServerResourceRecord -ZoneName a-d.local -RRType CName -Name Ber-RDSFarm

Para eliminar un registro DNS A:

Remove-DnsServerResourceRecord -ZoneName a-d.local -RRType A -Name ber-rds1 -Force

Para eliminar un registro PTR de una zona de búsqueda inversa:

Remove-DnsServerResourceRecord -ZoneName “100.168.192.in-addr.arpa” -RRType “PTR” -Name “33”

¿Cómo crear múltiples registros DNS A y PTR desde un archivo .CSV?

Supongamos que desea crear varios registros A a la vez en la zona de búsqueda directa de DNS específica. Puede agregarlos uno por uno usando el

Add-DnsServerResourceRecordA

cmdlet, pero es más fácil agregar registros A de forma masiva desde un archivo .CSV.

Cree un archivo de texto NewDnsRecords.txt con los nombres y las direcciones IP que desea agregar al DNS. El formato del archivo txt es el siguiente:

HostName, IPAddress

Para crear registros A en la zona a-d.site según los datos de su archivo TXT/CSV, utilice el siguiente script de PowerShell:

Import-CSV "C:\PS\NewDnsRecords.txt" | %{
Add-DNSServerResourceRecordA -ZoneName a-d.site -Name $_."HostName" -IPv4Address $_."IPAddress"
}

Si desea agregar registros a la Zona de búsqueda inversa al mismo tiempo, agregue el parámetro -CreatePtr a su

Add-DNSServerResourceRecordA

dominio.

Luego, usando la consola del Administrador de DNS (

dnsmgmt.msc

) o

Get-DnsServerResourceRecord -ZoneName a-d.local

asegúrese de que todos los registros DNS se hayan creado correctamente.

Si desea agregar registros PTR a la Zona de búsqueda inversa de forma masiva, cree un archivo de texto o CSV con la siguiente estructura:

octet,hostName,zoneName
102,ber-rds2.a-d.site,100.168.192.in-addr.arpa
103,ber-rds3.a-d.site,100.168.192.in-addr.arpa
104,ber-rds4.a-d.site,100.168.192.in-addr.arpa
105,ber-rds5.a-d.site,100.168.192.in-addr.arpa

Luego ejecute el script:

Import-CSV "C:\PS\NewDnsPTRRecords.txt" | %{
Add-DNSServerResourceRecordPTR -ZoneName $_."zoneName" -Name $_."octet" -PTRDomainName $_."hostName"
}

Asegúrese de que sus registros PTR aparezcan en la Zona de búsqueda inversa de DNS.

Artículos relacionados