DNS-Aufgaben mit PowerShell DNS-Cmdlets automatisieren

DNS-Einträge werden in der Regel dynamisch von Ihrem DNS-Server verwaltet. Es kann jedoch vorkommen, dass Sie manuell verschiedene Arten von DNS-Einträgen erstellen, bearbeiten oder entfernen müssen. Oder Sie fügen verschiedenen DNS-Aufgaben sogar Automatisierungsskripte hinzu. In solchen Fällen ist die Verwendung von PowerShell-DNS-Cmdlets die beste Lösung.

Zu diesem Blogbeitrag gehört ein Begleitvideo von David Lamb, einem Beitragenden von TechSnips. Sie können es sich gerne ansehen oder, wenn Sie Text bevorzugen, weiterlesen!

DNS-Einträge mit PowerShell-DNS-Cmdlets anzeigen

Sie können alle Ressourceneinträge für eine bestimmte DNS-Zone anzeigen, indem Sie einfach das PowerShell-DNS-Cmdlet Get-DnsServerResourceRecord verwenden. Mit diesem Cmdlet können Sie den Parameter ZoneName angeben, der alle DNS-Einträge in dieser Zone auflistet.

Wie Sie unten sehen können, generiert dies eine ziemlich umfangreiche Liste von Einträgen.

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad
Listing DNS records with PowerShell

Dieses Verhalten verdeutlicht einen der Vorteile dieses bestimmten Cmdlets gegenüber der grafischen DNS-Konsole. Die Ansicht zeigt Ihnen alle Einträge für diese Zone, unabhängig davon, in welchem Ordner sie sich befinden. In der grafischen Konsole würde es einige Zeit dauern, um diese Informationen zusammenzufügen.

Jetzt diese Liste etwas ausdünnen. Mit demselben Befehl, aber unter Verwendung des Parameters RRType, um nach A-Records (IPv4-Hosts) zu suchen und nach Einträgen zu filtern, bei denen die Time To Live (TTL) größer als 15 Minuten ist, erhalten wir eine etwas handlichere Liste. Sie können den Where-Object-Befehl verwenden, um nach vielen verschiedenen Eigenschaften von DNS-Einträgen zu filtern.

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A | Where-Object TimeToLive -GE "00:15:00"
Finding DNS records with a TimeToLive greater than 15 minutes

Einen Schritt weitergehend können Sie auch nach Einträgen in einer anderen DNS-Zone und sogar auf anderen DNS-Servern suchen.

Im folgenden Beispiel suchen wir nach A-Records in der Zone canada.corp.ad auf dem DNS-Server DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName canada.corp.ad -RRType A
Finding DNS A records

Hinzufügen und Entfernen von A-Host-Einträgen

Um einen Host-Eintrag hinzuzufügen, müssen Sie den PowerShell DNS-Befehl Add-DnsServerResourceRecordA verwenden. Im folgenden Beispiel möchten Sie einen Host-Eintrag für einen neuen Drucker hinzufügen, den Sie dem Netzwerk hinzufügen. Er wird zur Zone corp.ad mit dem Namen reddeerprint01 hinzugefügt, und seine IP-Adresse lautet 192.168.2.56.

PS51> Add-DnsServerResourceRecordA -Name reddeerprint01 -ZoneName corp.ad -IPv4Address 192.168.2.56
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A
Creating a DNS record

Wenn sich herausstellt, dass Sie einen Eintrag entfernen müssen, zum Beispiel weil der Drucker außer Betrieb genommen wurde, können Sie den folgenden Code verwenden, um den gerade erstellten Host-Eintrag zu entfernen:

PS51> Remove-DnsServerResourceRecord -ZoneName corp.ad -Name reddeerprint01 -RRType A

Hinzufügen und Entfernen von AAAA-Host-Einträgen

Es ist genauso einfach, einen IPv6-Host-Eintrag hinzuzufügen. Diese Einträge unterscheiden sich jedoch geringfügig, da sie als AAAA-Einträge aufgeführt sind. Sie werden feststellen, dass wir nun das PowerShell-DNS-Cmdlet Add-DnsServerResourceRecordAAAA verwenden. Es ist eine subtile Veränderung, aber eine wichtige.

Fügen Sie einen Eintrag zur Zone corp.ad für den neuen IT-Intranet-Server unter fc00:0128 hinzu und überprüfen Sie dann schnell mit dem folgenden Befehl, ob er erstellt wurde.

PS51> Add-DnsServerResourceRecordAAAA -Name it-intranet -ZoneName corp.ad -IPv6Address "fc00::0128"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType AAAA
Creating an AAA host record

Hinzufügen von Rückwärtssuche-Einträgen (PTR)

Mit PowerShell-DNS-Cmdlets können Sie auch PTR-Einträge hinzufügen. Ein Rückwärtssuche-Eintrag ermöglicht es dem Client, einen DNS-Server abzufragen, um den Hostnamen für eine angegebene IP-Adresse anzufordern.

Das Erstellen eines PTR-Eintrags ist ein relativ einfacher Vorgang, aber es gibt eine wichtige Information, die Sie kennen müssen, bevor Sie PTR-Einträge hinzufügen. Rückwärtssuche-Zonen werden standardmäßig nicht erstellt. Sie müssen Ihre Rückwärtssuche-Zone einrichten, bevor Sie Einträge hinzufügen. Glücklicherweise ist dies relativ einfach zu erledigen.

Erstellen einer DNS-Zone

Verwenden Sie das PowerShell-DNS-Cmdlet Add-DnsServerPrimaryZone, um eine neue DNS-Zone zu erstellen. In diesem Fall geben Sie bei Erstellung einer Rückwärtssuche-Zone die Netzwerk-ID an.

In diesem Beispiel habe ich mich auch dafür entschieden, den Replikationsumfang auf die gesamte AD-Gesamtstruktur zu setzen, und ich habe speziell DC03 als bevorzugten DNS-Server festgelegt.

PS51> Add-DnsServerPrimaryZone -ComputerName DC03 -NetworkId "192.168.2.0/24" -ReplicationScope Forest
PS51> Get-DnsServerZone -ComputerName DC03
Creating a DNS primary zone

Jetzt, da die Reverse-Lookup-Zone vorhanden ist, können Sie einen PTR-Eintrag für einen neuen Drucker mit dem Namen CYQF-Printer-01.canada.corp.ad und der IP-Adresse 192.168.2.56 hinzufügen. Da dieser Eintrag für die Zone canada.corp.ad bestimmt ist, zielen Sie auf den DNS-Server DC03.

Jetzt, da die Zone erstellt ist, erstellen wir einen PTR-Eintrag mit dem Befehl Add-DnsServerResourceRecordPtr. Bei der Verwendung dieses Cmdlets ist es wichtig, einige Dinge zu beachten.

  • Sie müssen den Zonennamen unter Verwendung der Netzwerk-ID in umgekehrter Reihenfolge angeben und dann .in-addr.arpa hinzufügen. Für unsere Netzwerk-ID 192.168.2.0/24 lautet der Zonenname 2.168.192.in-addr.arpa.
  • Der Parameter Name ist der Hostteil der IP-Adresse. Für unseren Drucker mit der IP-Adresse 192.168.2.56 ist der Name 56.

Sobald Sie diese Informationen haben, ist der Code zur Erstellung des PTR-Eintrags relativ einfach, wenn auch etwas lang:

PS51> Add-DnsServerResourceRecordPtr `
    -Name "56" `
    -PtrDomainName "CYQF-Printer-01.canada.corp.ad" `
    -ZoneName "2.168.192.in-addr.arpa" `
    -computerName DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName "2.168.192.in-addr.arpa"
Creating a PTR record

Alias-Einträge (CNAME) hinzufügen

Um dieses Tutorial abzuschließen, erstellen Sie einen Alias-Host-Eintrag oder CNAME-Eintrag mit dem Befehl Add-DnsServerResourceRecordCName.

Diese Einträge ermöglichen es Ihnen, einen Alias für einen vorhandenen Host-Eintrag in der Zone anzugeben. Dies ist besonders nützlich, wenn Sie beispielsweise den Finanzbenutzern eine Adresse für ihre webbasierte Finanzanwendung bereitstellen möchten.

Sie könnten ein Alias mit dem Namen finance erstellen und es auf den Webserver webapp25.corp.ad verweisen lassen. Sobald die Anwendung auf den neuen Webserver mit einem neuen Hostnamen migriert wurde, ändern Sie den CNAME-Eintrag so, dass finance auf den neuen Host verweist. Auf diese Weise müssen die Benutzer ihre Lesezeichen nicht aktualisieren. Sie können weiterhin auf ihre Anwendung unter der Adresse finance.corp.ad zugreifen.

PS51> Add-DnsServerResourceRecordCName -ZoneName corp.ad -HostNameAlias "webapp25.corp.ad" -Name "finance"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType CName
Creating a CNAME record

Wenn Sie tiefer in die DNS-Thematik eintauchen und weitere fortgeschrittene Funktionen kennenlernen möchten, sollten Sie sich unbedingt alle anderen DNS-Beiträge hier ansehen.

Zusammenfassung

Dies schließt unser Tutorial zur Verwendung von PowerShell mit DNS-Einträgen ab. Mit dem hier gesammelten Wissen sollten Sie nun in der Lage sein, große Teile von DNS-Einträgen interaktiv zu verwalten oder sogar zu automatisieren, wenn Sie es möchten!

Source:
https://adamtheautomator.com/powershell-dns/