Administrar zonas y registros DNS en Windows puede ser un verdadero fastidio a veces, especialmente si se trabaja en masa o se necesita automatizar. La Dnscmdherramienta CLI clásica funciona, pero resulta algo anticuada y torpe. Por lo tanto, para configuraciones más modernas, el módulo DNSServer de PowerShell es una gran ayuda, una vez instalado. Si se gestionan registros o zonas DNS con frecuencia, saber cómo hacerlo mediante PowerShell puede ahorrar mucho tiempo y, además, facilita la creación de scripts o la automatización. Tanto si se gestionan pocas zonas como si se realizan cambios masivos en los registros desde archivos CSV, esta guía incluye los conceptos básicos para empezar. Verá comandos que ayudan a crear, modificar y eliminar registros o zonas en el servidor DNS; todo bastante sencillo una vez que se domina.
Cómo solucionar problemas de administración de DNS con PowerShell en Windows
Módulo de PowerShell DNSServer
Primero, necesitas el módulo DNSServer, que forma parte de RSAT (Herramientas de administración remota del servidor).En Windows 10, probablemente tengas que instalar RSAT por separado: solo ve a Configuración > Aplicaciones > Funciones opcionales > Agregar una función y busca RSAT: Herramientas del servidor DNS. En Windows Server, es más sencillo: puedes habilitarlo a través de Administrador del servidor > Administrar > Agregar roles y funciones. Si no estás seguro de si el módulo está instalado, ejecuta:
Get-Module DNSServer –ListAvailable
Si esto arroja algún resultado, todo bien. De lo contrario, deberá instalar RSAT o habilitar las herramientas del servidor DNS. Para ver qué comandos están disponibles, pruebe:
Get-Module DNSServer
Esto muestra todos los cmdlets, lo que te permite hacerte una idea de lo que puedes modificar. Un problema común es que PowerShell no reconozca el módulo, generalmente porque no está instalado o no se ha importado en tu sesión. Para importarlo manualmente, ejecuta Import-Module DNSServer. Sin embargo, en versiones más recientes de Windows, debería cargarse automáticamente si está instalado.
Administrar zonas DNS con PowerShell
Supongamos que necesita ver o crear zonas. Primero, puede comprobar las zonas existentes en su servidor DNS ejecutando:
Get-DnsServerZone –ComputerName dc01
Reemplace dc01 con el nombre de host o la IP de su servidor DNS. Si se queda en blanco o se produce un error, significa que hay un problema con su conexión o permisos. Para agregar una nueva zona principal llamada woshub.com dentro de Active Directory, ejecute:
Add-DnsServerPrimaryZone -Name woshub.com -ReplicationScope "Forest" –PassThru
Esto debería crear una zona integrada, de modo que esté vinculada a tu AD. Si quieres una zona de búsqueda inversa (ideal para registros PTR), ejecuta:
Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ReplicationScope Domain
Esto es útil al configurar asignaciones DNS inversas. Además, si añade nuevas zonas, no olvide sincronizarlas con otros servidores DNS de su entorno, especialmente si tiene varios controladores de dominio. Puede hacerlo con:
Sync-DnsServerZone –passthru
Es normal que tu zona aparezca sin registros (aún).Para ver el contenido de una zona, simplemente ejecuta:
Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local
Si por alguna razón quieres eliminar una zona, es igual de sencillo:
Remove-DnsServerZone -Name woshub.com -ComputerName dc01
Esto borra la zona y sus registros, así que tenga cuidado. Siempre verifique antes de hacerlo en vivo.
Administrar registros DNS como un profesional
Añadir nuevos registros DNS es bastante sencillo. Para crear un registro A para un nombre de host, el comando es el siguiente:
Add-DnsServerResourceRecordA -Name ber-rds1 -IPv4Address 192.168.100.33 -ZoneName woshub.com -TimeToLive 01:00:00
Y si también quieres el registro PTR (para DNS inverso), simplemente agrega –CreatePtr a ese comando, o hazlo por separado:
Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.woshub.com
Lo mismo ocurre con los CNAME, que son básicamente alias para los registros A. Para configurar uno, ejecute:
Add-DnsServerResourceRecordCName -ZoneName woshub.com -Name Ber-RDSFarm -HostNameAlias ber-rds1.woshub.com
Si necesita actualizar la dirección IP de un registro existente, el proceso es un poco más largo. Debe obtener el registro actual, modificar la propiedad y luego reemplazarla:
$OldDNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01
$NewDNS = $OldDNS | Select-Object -Property * -ExcludeProperty RecordData
$NewDNS. RecordData. IPv4Address = [System. Net. IPAddress]::parse('192.168.100.133')
Set-DnsServerResourceRecord -NewInputObject $NewDNS -OldInputObject $OldDNS -ZoneName woshub.com -ComputerName dc01
And make sure it’s updated:
Get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com
Want to list all CNAME records to troubleshoot? Just add -RRType CNAME:
Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName woshub.com -RRType CNAME
Or filter records with specific names or patterns using:
Get-DnsServerResourceRecord -ZoneName woshub.com -RRType A | Where-Object HostName -like "*rds*"
Removing records? Easier than you think. For example, delete a CNAME with:
Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType CName -Name Ber-RDSFarm
Or an A record:
Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType A -Name ber-rds1 –Force
Same goes for PTR records in reverse zones.
Bulk Creating Records from CSV Files
Now, here’s the thing — doing records one by one sucks. Instead, if you have a CSV with all your hostnames and IPs, automate the whole process. Create a text file, say NewDnsRecords.txt, with this format:
HostName, IPAddress host1, 192.168.100.10 host2, 192.168.100.11
And run this PowerShell snippet:
Import-Csv "C:\PS\NewDnsRecords.txt" | %{ Add-DnsServerResourceRecordA -ZoneName woshub.com -Name $_."HostName" -IPv4Address $_."IPAddress" }
If you want PTR records for reverse DNS, add –CreatePtr and modify the script accordingly, or process a file with the hostname, octet, and zone info. For example, a CSV like:
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
And run a similar import script:
Import-Csv "C:\PS\NewDnsPTRRecords.txt" | %{ Add-DNSServerResourceRecordPTR -ZoneName $_."zoneName" -Name $_."octet" -PTRDomainName $_."hostName" }
Always double-check your DNS through the DNS Manager console (dnsmgmt.msc) after bulk changes — nothing worse than missing records or typos.
Wrap-up
Handling DNS with PowerShell isn’t rocket science, but it’s easy to get overwhelmed when you’re doing it manually or in big batches. These commands are a good starting point, and once you get why they work, automating DNS tasks becomes way less stressful. Just keep testing in a lab environment if possible, and remember — always backup your DNS zones before making major changes, in case something goes sideways. Overall, scripting DNS management with PowerShell can seriously streamline your workflow, especially if you manage lots of zones or records regularly.
Summary
- Make sure the DNSServer module is installed and imported.
- Use
Get-DnsServerZoneandAdd-DnsServerPrimaryZoneto oversee and create zones. - Add or update DNS records with commands like
Add-DnsServerResourceRecordAorSet-DnsServerResourceRecord. - Bulk operations? Just import from CSV and run the script.
- Always verify your changes in DNS Manager or with
Get-DnsServerResourceRecord.
Fingers crossed this helps speed up your DNS workflows — because Windows DNS can be a real stubborn beast sometimes, but PowerShell makes it a lot more manageable.