PowerShell: Massenbearbeitung von SOA-Einstellungen im DNS

Man stelle sich vor, jemand möchte für alle DNS-Zonen (Forward lookup) seines Windows DNS Servers die „Minimum TTL“ auf 5 Stunden setzen. Gemeint ist diese Einstellung:

Für eine oder zwei Zonen freilich kein Problem, doch wenn mehrere Dutzend oder gar Hundert Zonen gehostet werden, sucht man sich Automatisierungsmittel. Und PowqerShell liefert gleich zwei:

1. Old School mit WMI

Hier bedienen wir uns der .Modify() Methode:

$ttl = New-TimeSpan -Hours 5
$zones = Get-WMIObject -Namespace "root\MicrosoftDNS" -Class "MicrosoftDNS_Zone" | where {($_.Reverse -eq $false) -and ($_.ZoneType -eq 1)} | Select-Object -ExpandProperty Name
foreach ($zone in $zones) {
    $soa = Get-WMIObject -Namespace "root\MicrosoftDNS" -Class "MicrosoftDNS_SOAType" -Filter "ContainerName='$zone'"
    if ($soa.MinimumTTL -ne $ttl.TotalSeconds) {
        $soa.Modify($soa.TTL, $soa.SerialNumber + 1,$soa.PrimaryServer, $soa.ResponsibleParty,$soa.RefreshInterval,$soa.RetryDelay,$soa.ExpireLimit,$ttl.TotalSeconds)
    }
}

Das Gute ist, die Methode funktioniert auf jeder Windows Server- und PowerShell version (OK, Server ab 2000 und PowerShell ab 2.0).

2. Modern mit dem DNS-Modul aus RSAT

Steht uns das DNS-RSAT-Modul zur Verfügung, können wir die folgende „PowerShell-igere“ Variante einsetzen:

 
Import-Module DNSServer 
$ttl = New-TimeSpan -Hours 5 
$zones = Get-DnsServerZone | Where-Object {($_.IsReverseLookupZone -eq $false) -and ($_.ZoneType -eq 'Primary')} 
foreach ($zone in $zones) { 
    $soa = Get-DNSServerResourceRecord -RRType SOA -ZoneName $zone.ZoneName 
    if ($soa.RecordData.MinimumTimeToLive -ne $ttl) { 
        $newsoa = $soa.Clone() 
        $newsoa.RecordData.MinimumTimeToLive = $ttl
        Set-DnsServerResourceRecord -NewInputObject $newsoa -OldInputObject $soa -ZoneName $zone.ZoneName 
    }
}

Happy DNSsing!

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.