Un administrador de Windows puede usar el viejo Dnscmd herramienta cli o Servidor DNS módulo de PowerShell para administrar 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 DNS mediante PowerShell.
Módulo DNSServer PowerShell
La Servidor DNS El módulo para PowerShell es parte de RSAT. En Windows 10, tendrá que instalar RSAT por separado, y en Windows Server puede habilitar el módulo usando 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 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).

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 controladores de dominio en el dominio, ejecute el siguiente comando:
Sync-DnsServerZone –passthru
Muestre 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 woshub.com -ComputerName dc01
También eliminará todos los registros DNS existentes en la zona.
Administrar 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 –CreatePtr parámetro al comando anterior o cree el puntero manualmente usando el Add-DNSServerResourceRecordPTR cmdlet:
Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.woshub.com
Para agregar un alias (CNAME) 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, tendrá que aplicar un método bastante complejo ya que no puede cambiar la 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 Set-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

Puede mostrar la lista de registros DNS del mismo tipo utilizando el –RRType parámetro. Vamos a mostrar la lista de registros CNAME en la zona DNS especificada:
Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName woshub.com -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 rds frase en sus nombres de host:
Get-DnsServerResourceRecord -ZoneName woshub.com -RRType A | Where-Object HostName -like "*rds*"

Para quitar 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 varios registros DNS A y PTR a partir de 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.
Crea 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

Para crear registros A en la zona woshub.com de acuerdo con los datos de su archivo TXT / CSV, use 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 –CreatePtr parámetro a su Add-DNSServerResourceRecordA mando.
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.

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.





