Wenn Sie Änderungen auf Ihrem Microsoft DNS-Server durch das DNS-MMC-Snap-In vornehmen, verschwenden Sie wahrscheinlich eine Menge Zeit.
Warum? Weil es möglich ist, DNS-Objekte in der MMC auch mit Hilfe von PowerShell zu erstellen, zu ändern und zu entfernen. Wenn Sie PowerShell benutzen, um den DNS zu verwalten, können Sie dies nicht nur von der Kommando-Zeile aus kontrollieren, sondern diese Kommandos auch in ein Skript eingeben, um alle möglichen zeitraubenden Aufgaben zu automatisieren.
Um den Umfang dieses Artikels nicht zu überschreiten, beschränke ich mich hier nur auf die Verwaltung der DNS-Zonen mit PowerShell, obwohl es sehr wohl möglich ist, auch andere DNS-Objekte wie Records und den Server selbst damit zu verwalten.
Ich gehe von einigen Grundvoraussetzungen aus: Erstens nehme ich an, dass Sie die Erlaubnis haben, die DNS-Zonen auf Ihrem Server zu lesen, zu ändern und zu löschen. Zweitens werde ich einige Konzepte von DNS-Servern zeigen, die sich in einer Active-Directory-Domain mit AD-integrierten Zonen befinden. PowerShell kann auch Zonen und Records verwalten, die außerhalb des Active Directory sind, aber das Ergebnis wird nicht genau das gleiche sein, wie das, was ich Ihnen hier zeige. Zuletzt müssen Sie eine Version der Remote Server Administration Tools (RSAT) auf Ihrem Clienten speziell für Ihr Betriebssystem installiert haben.
Zuerst testen Sie, ob das DNSServer-Module verfügbar ist. Dafür benutze ich das Cmdlet Get-Module.
PS C:\> Get-Module DnsServer -ListAvailable
Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 2.0.0.0 DnsServer {Add-DnsServerConditionalForwarderZone, Add-DnsServerDirectoryPartition, Add-DnsServerForwarder, Add-DnsServerPrimaryZone...}
Great! It looks like our module is downloaded and we have some available commands. Let's now see what commands we have to work with DNS zones.
PS C:\> Get-Command -Module DnsServer -Noun *Zone*
CommandType Name Version Source
----------- ---- ------- ------
Function Add-DnsServerConditionalForwarderZone 2.0.0.0 DnsServer
Function Add-DnsServerPrimaryZone 2.0.0.0 DnsServer
Function Add-DnsServerSecondaryZone 2.0.0.0 DnsServer
Function Add-DnsServerStubZone 2.0.0.0 DnsServer
Function Add-DnsServerZoneDelegation 2.0.0.0 DnsServer
Function Add-DnsServerZoneScope 2.0.0.0 DnsServer
Function Add-DnsServerZoneTransferPolicy 2.0.0.0 DnsServer
Function ConvertTo-DnsServerPrimaryZone 2.0.0.0 DnsServer
Function ConvertTo-DnsServerSecondaryZone 2.0.0.0 DnsServer
Function Export-DnsServerZone 2.0.0.0 DnsServer
Function Get-DnsServerDnsSecZoneSetting 2.0.0.0 DnsServer
Function Get-DnsServerGlobalNameZone 2.0.0.0 DnsServer
Function Get-DnsServerZone 2.0.0.0 DnsServer
Function Get-DnsServerZoneAging 2.0.0.0 DnsServer
Function Get-DnsServerZoneDelegation 2.0.0.0 DnsServer
Function Get-DnsServerZoneScope 2.0.0.0 DnsServer
Function Get-DnsServerZoneTransferPolicy 2.0.0.0 DnsServer
Function Invoke-DnsServerZoneSign 2.0.0.0 DnsServer
Function Invoke-DnsServerZoneUnsign 2.0.0.0 DnsServer
Function Remove-DnsServerZone 2.0.0.0 DnsServer
Function Remove-DnsServerZoneDelegation 2.0.0.0 DnsServer
Function Remove-DnsServerZoneScope 2.0.0.0 DnsServer
Function Remove-DnsServerZoneTransferPolicy 2.0.0.0 DnsServer
Function Reset-DnsServerZoneKeyMasterRole 2.0.0.0 DnsServer
Function Restore-DnsServerPrimaryZone 2.0.0.0 DnsServer
Function Restore-DnsServerSecondaryZone 2.0.0.0 DnsServer
Function Resume-DnsServerZone 2.0.0.0 DnsServer
Function Set-DnsServerConditionalForwarderZone 2.0.0.0 DnsServer
Function Set-DnsServerDnsSecZoneSetting 2.0.0.0 DnsServer
Function Set-DnsServerGlobalNameZone 2.0.0.0 DnsServer
Function Set-DnsServerPrimaryZone 2.0.0.0 DnsServer
Function Set-DnsServerSecondaryZone 2.0.0.0 DnsServer
Function Set-DnsServerStubZone 2.0.0.0 DnsServer
Function Set-DnsServerZoneAging 2.0.0.0 DnsServer
Function Set-DnsServerZoneDelegation 2.0.0.0 DnsServer
Function Set-DnsServerZoneTransferPolicy 2.0.0.0 DnsServer
Function Start-DnsServerZoneTransfer 2.0.0.0 DnsServer
Function Suspend-DnsServerZone 2.0.0.0 DnsServer
Function Sync-DnsServerZone 2.0.0.0 DnsServer
Function Test-DnsServerDnsSecZoneSetting 2.0.0.0 DnsServer
Dann erstelle ich eine Zone mit PowerShell. Dafür benutze ich die Funktion Add-DnsServerPrimaryZone. Dies kann man am einfachsten machen, indem man zwei Parameter benutzt. Diese Parameter sind “Name” und "ReplicationScope". In diesem Beispiel werde ich jedoch den Parameter “ComputerName” benutzen, da ich das Kommando von einem entfernten Computer aus aufrufen werde.
Add-DnsServerPrimaryZone -Name testzone.mylab.local -ComputerName DC -ReplicationScope Forest
Sie könne hier sehen, dass meine Domain „mylab.local“ ist und mein Zonenname „testzone“. Mein DNS-Server ist DC, also gebe ich das für meinen Parameter „ComputerName” an und zu guter Letzt, da mein Server auf meiner Domain ist, muss ich auch den ReplicationScope setzen, also habe ich die Zone unter allen anderen DNS servers in meinem Active Directory repliziert.
Als nächstes kann ich das Kommando Get-DnsServerZone benutzen, um sicherzustellen, dass die Zone erstellt wurde. Ich könnte den Parameter “Name” benutzen, aber um Ihnen alle Zonen zu zeigen, die ich habe, gebe ich nur mit „Get-DnsServerZone“ ein, sie alle zu finden.
PS C:\> Get-DnsServerZone -ComputerName DC
ZoneName ZoneType IsAutoCreated IsDsIntegrated IsReverseLookupZone IsSigned
-------- -------- ------------- -------------- ------------------- --------
_msdcs.mylab.local Primary False True False False
0.in-addr.arpa Primary True False True False
127.in-addr.arpa Primary True False True False
255.in-addr.arpa Primary True False True False
mylab.local Primary False True False False
testzone.mylab.local Primary False True False False
TrustAnchors Primary False True False False
Und um sicher zu sein, dass wir durch den gesamten Lebenszyklus einer DNS-Zone gehen, lösche ich sie auch wieder.
PS C:\> Remove-DnsServerZone -Name testzone.mylab.local -ComputerName DC
Confirm
Das wird auch alle Einträge in der Zone löschen und der Server wird die Zone nicht länger hosten. Möchten Sie fortfahren?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y
PS C:\> Get-DnsServerZone -ComputerName DC
ZoneName ZoneType IsAutoCreated IsDsIntegrated IsReverseLookupZone IsSigned
-------- -------- ------------- -------------- ------------------- --------
_msdcs.mylab.local Primary False True False False
0.in-addr.arpa Primary True False True False
127.in-addr.arpa Primary True False True False
255.in-addr.arpa Primary True False True False
mylab.local Primary False True False False
TrustAnchors Primary False True False False
Es gibt noch so viele andere Möglichkeiten mit der Verwaltung von DNS-Zonen in PowerShell. Ich rate Ihnen, alle Kommandos anzuschauen mit: Get-Command -Module DnsServer -Noun *Zone*. Dieses Kommando gibt Ihnen eine Liste aller Kommandos innerhalb des Moduls DnsServer, die „Zone“ in Ihrem Namen haben. Sie werden sehen, dass die Kommandos selbsterklärend sind und wenn Sie weitere Erklärungen über jedes brauchen, können Sie diese immer über Get-Help aufrufen.
Tipp: Lesen Sie dazu auch das Whitepaper Automatisieren mit PowerShell oder laden Sie sich kostenfrei eine Testversion von MOVEit Automation, Software für die Automatisierung der Dateiübertragung, herunter.
Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.
Lassen Sie sich von unseren Experten beibringen, wie Sie die erstklassigen Funktionen von Sitefinity nutzen können, um überzeugende digitale Erlebnisse zu bieten.
Weitere InformationenAbonnieren Sie, um alle Neuigkeiten, Informationen und Tutorials zu erhalten, die Sie benötigen, um bessere Business-Apps und -Websites zu erstellen