Wie man DNS-Zonen und -Einträge mit PowerShell erstellt und verwaltet

Die Verwaltung von DNS-Zonen und -Einträgen unter Windows kann mitunter mühsam sein, insbesondere bei großen Datenmengen oder Automatisierungsanforderungen. Das klassische DnscmdCLI-Tool funktioniert zwar, wirkt aber etwas veraltet und umständlich. Für modernere Umgebungen ist das PowerShell- Modul DNSServer daher eine echte Erleichterung – sobald es installiert ist. Wer regelmäßig DNS-Einträge oder -Zonen bearbeitet, spart mit PowerShell enorm viel Zeit und kann zudem einfacher Skripte erstellen oder Prozesse automatisieren. Egal, ob Sie nur wenige Zonen verwalten oder Massenänderungen aus CSV-Dateien vornehmen: Dieser Leitfaden vermittelt Ihnen die Grundlagen für den Einstieg. Sie finden Befehle zum Erstellen, Ändern und Löschen von Einträgen oder Zonen auf Ihrem DNS-Server – alles ganz einfach, sobald Sie sich eingearbeitet haben.

Wie man DNS-Verwaltungsprobleme mit PowerShell unter Windows behebt

DNSServer PowerShell-Modul

Zunächst benötigen Sie das DNSServer -Modul, das Bestandteil der RSAT (Remoteserver-Verwaltungstools) ist. Unter Windows 10 müssen Sie die RSAT wahrscheinlich separat installieren. Gehen Sie dazu einfach zu Einstellungen > Apps > Optionale Features > Feature hinzufügen und suchen Sie nach RSAT: DNS-Server-Tools. Unter Windows Server ist es einfacher: Sie können es über den Server-Manager > Verwalten > Rollen und Features hinzufügen aktivieren. Wenn Sie sich nicht sicher sind, ob das Modul installiert ist, führen Sie folgenden Befehl aus:

Get-Module DNSServer –ListAvailable

Wenn das Ergebnisse liefert, ist alles in Ordnung. Andernfalls müssen Sie RSAT installieren oder die DNS-Server-Tools aktivieren. Um die verfügbaren Befehle anzuzeigen, versuchen Sie Folgendes:

Get-Module DNSServer

Dadurch werden alle Cmdlets angezeigt, sodass Sie einen Überblick über die möglichen Einstellungen erhalten. Ein häufiges Problem ist, dass PowerShell das Modul nicht erkennt – in der Regel, weil es nicht installiert oder in Ihrer Sitzung nicht importiert wurde. Um es manuell zu importieren, führen Sie den Befehl aus Import-Module DNSServer. Unter neueren Windows-Versionen sollte es jedoch automatisch geladen werden, sofern es installiert ist.

DNS-Zonen mit PowerShell verwalten

Angenommen, Sie müssen Zonen anzeigen oder erstellen. Zuerst können Sie die vorhandenen Zonen auf Ihrem DNS-Server überprüfen, indem Sie folgenden Befehl ausführen:

Get-DnsServerZone –ComputerName dc01

Ersetzen Sie dc01 durch den Hostnamen oder die IP-Adresse Ihres DNS-Servers. Erhalten Sie eine leere Seite oder eine Fehlermeldung, liegt ein Problem mit Ihrer Verbindung oder Ihren Berechtigungen vor. Um eine neue primäre Zone namens woshub.com in Active Directory hinzuzufügen, führen Sie folgenden Befehl aus:

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

Dadurch wird eine integrierte Zone erstellt, die quasi mit Ihrem Active Directory verknüpft ist. Wenn Sie eine Reverse-Lookup-Zone benötigen – gut für PTR-Einträge –, führen Sie Folgendes aus:

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

Dies ist hilfreich beim Einrichten von Reverse-DNS-Zuordnungen. Vergessen Sie außerdem nicht, neue Zonen mit den anderen DNS-Servern in Ihrer Umgebung zu synchronisieren, insbesondere bei mehreren Domänencontrollern. Dies ist möglich mit:

Sync-DnsServerZone –passthru

Es ist normal, dass Ihre Zone (noch) keine Datensätze anzeigt. Um den Inhalt einer Zone anzuzeigen, führen Sie einfach folgenden Befehl aus:

Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local

Falls Sie aus irgendeinem Grund eine Zone entfernen möchten, ist das genauso einfach:

Remove-DnsServerZone -Name woshub.com -ComputerName dc01

Dadurch wird die Zone gelöscht – und damit auch ihre Datensätze. Seien Sie daher vorsichtig.Überprüfen Sie dies immer doppelt, bevor Sie es live schalten.

DNS-Einträge wie ein Profi verwalten

Das Hinzufügen neuer DNS-Einträge ist recht einfach. Um einen A-Eintrag für einen Hostnamen zu erstellen, lautet der Befehl wie folgt:

Add-DnsServerResourceRecordA -Name ber-rds1 -IPv4Address 192.168.100.33 -ZoneName woshub.com -TimeToLive 01:00:00

Und wenn Sie auch den PTR-Eintrag (für Reverse-DNS) benötigen, fügen Sie einfach –CreatePtr zu diesem Befehl hinzu oder führen Sie ihn separat aus:

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

Gleiches gilt für CNAMEs, die im Grunde Aliase für A-Einträge sind. Um einen solchen Eintrag einzurichten, führen Sie folgenden Befehl aus:

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

Wenn Sie die IP-Adresse eines bestehenden Eintrags aktualisieren müssen, dauert es etwas länger. Sie müssen den aktuellen Eintrag abrufen, die Eigenschaft ändern und ihn dann ersetzen:

$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-DnsServerZone and Add-DnsServerPrimaryZone to oversee and create zones.
  • Add or update DNS records with commands like Add-DnsServerResourceRecordA or Set-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.