Het beheren van DNS-zones en -records op Windows kan soms behoorlijk lastig zijn, vooral als je grote hoeveelheden tegelijk wilt beheren of processen wilt automatiseren. De klassieke CLI-tool werkt wel, maar voelt wat verouderd en onhandig aan. Daarom is de DNSServer-Dnscmd module van PowerShell een redder in nood voor modernere systemen – mits geïnstalleerd. Als je regelmatig DNS-records of -zones wijzigt, kan het gebruik van PowerShell je enorm veel tijd besparen en maakt het scripten en automatiseren een stuk eenvoudiger. Of je nu een paar zones beheert of grote hoeveelheden records wijzigt vanuit CSV-bestanden, deze handleiding biedt de basis om je op weg te helpen. Je vindt hier opdrachten waarmee je records of zones op je DNS-server kunt aanmaken, wijzigen en verwijderen. Het is allemaal vrij eenvoudig als je het eenmaal door hebt.
Hoe los je DNS-beheerproblemen op met PowerShell op Windows?
DNSServer PowerShell-module
Allereerst hebt u de DNSServer- module nodig, die deel uitmaakt van RSAT (Remote Server Administration Tools).Op Windows 10 moet u RSAT waarschijnlijk apart installeren. Ga hiervoor naar Instellingen > Apps > Optionele functies > Een functie toevoegen en zoek naar RSAT: DNS Server Tools. Op Windows Server is het eenvoudiger: u kunt de module inschakelen via Serverbeheer > Beheren > Rollen en functies toevoegen. Als u niet zeker weet of de module is geïnstalleerd, voert u het volgende commando uit:
Get-Module DNSServer –ListAvailable
Als dat resultaten oplevert, zit je goed. Zo niet, dan moet je RSAT installeren of de DNS-servertools inschakelen. Om te zien welke commando’s beschikbaar zijn, probeer het volgende:
Get-Module DNSServer
Hiermee worden alle cmdlets weergegeven, zodat je een idee krijgt van wat je kunt aanpassen. Een veelvoorkomend probleem is dat PowerShell de module niet herkent, meestal omdat deze niet is geïnstalleerd of niet is geïmporteerd in je sessie. Om de module handmatig te importeren, voer je het commando uit Import-Module DNSServer. Op nieuwere Windows-versies zou de module echter automatisch moeten laden als deze is geïnstalleerd.
DNS-zones beheren met PowerShell
Stel dat u zones wilt bekijken of aanmaken. U kunt eerst de bestaande zones op uw DNS-server controleren door het volgende commando uit te voeren:
Get-DnsServerZone –ComputerName dc01
Vervang dc01 door de hostnaam of het IP-adres van uw DNS-server. Als u een lege waarde of een foutmelding krijgt, is er iets mis met uw verbinding of machtigingen. Om een nieuwe primaire zone met de naam woshub.com toe te voegen in Active Directory, voert u het volgende commando uit:
Add-DnsServerPrimaryZone -Name woshub.com -ReplicationScope "Forest" –PassThru
Dat zou een geïntegreerde zone moeten creëren, zodat deze als het ware gekoppeld is aan je Active Directory. Als je een zone met omgekeerde opzoeking wilt – handig voor PTR-records – voer dan het volgende commando uit:
Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ReplicationScope Domain
Dit is handig bij het instellen van reverse DNS-mappings. Vergeet ook niet om nieuwe zones te synchroniseren met andere DNS-servers in uw omgeving, vooral als u meerdere domeincontrollers hebt. U kunt dat doen met:
Sync-DnsServerZone –passthru
Verwacht dat er (nog) geen gegevens in je zone worden weergegeven – dat is normaal. Om te zien wat er in een zone staat, voer je het volgende commando uit:
Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local
Mocht u om welke reden dan ook een zone willen verwijderen, dan is dat net zo eenvoudig:
Remove-DnsServerZone -Name woshub.com -ComputerName dc01
Hiermee wordt de zone gewist — inclusief alle records, dus wees daar voorzichtig mee. Controleer dit altijd goed voordat je het live uitvoert.
DNS-records beheren als een professional
Het toevoegen van nieuwe DNS-records is vrij eenvoudig. Om een A-record voor een hostnaam aan te maken, ziet het commando er als volgt uit:
Add-DnsServerResourceRecordA -Name ber-rds1 -IPv4Address 192.168.100.33 -ZoneName woshub.com -TimeToLive 01:00:00
En als je ook het PTR-record (voor reverse DNS) wilt, voeg dan gewoon –CreatePtr toe aan dat commando, of doe het apart:
Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.woshub.com
Hetzelfde geldt voor CNAME’s, die in feite aliassen zijn voor A-records. Om er een in te stellen, voert u het volgende commando uit:
Add-DnsServerResourceRecordCName -ZoneName woshub.com -Name Ber-RDSFarm -HostNameAlias ber-rds1.woshub.com
Als je het IP-adres van een bestaand record moet bijwerken, duurt het iets langer. Je moet het huidige record ophalen, de eigenschap wijzigen en het vervolgens vervangen:
$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.