Cree y administre zonas y registros DNS con PowerShell

Un administrador de Windows puede usar el buen viejo Dnscmd herramienta CLI o Servidor DNS módulo 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

los Servidor DNS módulo para PowerShell es una 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).

instale DNS Server Tools con el módulo DNSServer para PowerShell

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

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 woshub.com, ejecute este comando:

Add-DnsServerPrimaryZone -Name woshub.com -ReplicationScope "Forest" –PassThru

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

Add-DnsServerPrimaryZone

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

Get-DnsServerResourceRecord

Para eliminar la zona DNS, use el comando:

Remove-DnsServerZone -Name woshub.com -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 woshub.com -TimeToLive 01:00:00

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

Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.woshub.com

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

Add-DnsServerResourceRecordCName -ZoneName woshub.com -Name Ber-RDSFarm -HostNameAlias ber-rds1.woshub.com

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 woshub.com -ComputerName dc01
$OldADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -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 Establecer-DnsServerResourceRecord cmdlet:

Set-DnsServerResourceRecord -NewInputObject $NewADNS -OldInputObject $OldADNS -ZoneName woshub.com -ComputerName dc01

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

Get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com

Cambiar/Actualizar la dirección IP del registro del host DNS a través de PowerShell

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

Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName woshub.com -RRType CNAME

Get-DnsServerResourceRecord RRType

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 rds frase en sus nombres de host:

Get-DnsServerResourceRecord -ZoneName woshub.com -RRType A | Where-Object HostName -like "*rds*"

Get-DnsServerResourceRecord Where-Object HostName como

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

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

Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType CName -Name Ber-RDSFarm

Para eliminar un registro DNS A:

Remove-DnsServerResourceRecord -ZoneName woshub.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.

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

HostName, IPAddress

Adición de varios registros DNS desde un archivo .TXT/ .CSV con un script de PowerShell

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

Import-CSV "C:PSNewDnsRecords.txt" | %{
Add-DNSServerResourceRecordA -ZoneName woshub.com -Name $_."HostName" -IPv4Address $_."IPAddress"
}

Si desea agregar registros a la Zona de búsqueda inversa al mismo tiempo, agregue el –CrearPtr parámetro a su Add-DNSServerResourceRecordA dominio.

Luego, usando la consola del Administrador de DNS (dnsmgmt.msc) o Get-DnsServerResourceRecord -ZoneName woshub.local asegúrese de que todos los registros DNS se hayan creado correctamente.

Agregar registros DNS de forma masiva mediante PoweShell

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.woshub.com,100.168.192.in-addr.arpa
103,ber-rds3.woshub.com,100.168.192.in-addr.arpa
104,ber-rds4.woshub.com,100.168.192.in-addr.arpa
105,ber-rds5.woshub.com,100.168.192.in-addr.arpa

Luego ejecute el script:

Import-CSV "C:PSNewDnsPTRRecords.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 Interesantes