
59769
06.07.2009, aktualisiert um 16:10:40 Uhr
alte DNS Einträge via Script löschen
Hallo zusammen
Ich habe den Auftrag bekommen, auf unserem DNS Server nach veralteten Einträgen zu suchen und diese allenfalls zu löschen.
Dazu habe ich einen Script gefunden. Leider kenne ich mich mit Scripten absolut nicht aus..
Verstehe ich das falsch oder müsste ich beim ausführen des Scripts nach Servernamen gefragt werden? Oder muss ich den direkt in den Script eintragen?
Und sehe ich das richtig, dass keine Einträge gelöscht werden, wenn ich den Script so ausführe?
Grüsse Mücke
'-------------------------------------------------------------------------
' DNSAge
'
' Beschreibung
' Lieset das alter der DNS Einträge und löscht diese optional
'
' Voraussetzung
' - Ausführender Benutzer ist lokaler Admin auf dem DNS-server
'
' Version 1.0 FC 18. 08.2008
' Version 1.1
' neue Defaults und Inputbox
' Age in Min
' Version 1.2
' Tippfehler, vergessen 6 ;statt, etc korrigiert
' Version 1.3 FC 16.06.2009
' Vergleich war buggy da MaxAge ein String war Clng
' Offen
' Ausgabe "Deleted" ins Eventlog/Logfile
' Ausgabe Status als CSV-Datei
'-------------------------------------------------------------------------
Option Explicit
'~ On Error Resume Next
dim server, domain, maxage
Server=InputBox("Bitte DNS Servername eingeben oder . als localhost","ServerName",".")
' server = "."
domain=InputBox("Bitte DNS Zone eingeben oder leer für alle Einträge","DNSZone","")
' domain = ""
maxage=InputBox("Maximales Alter in Minuten, zum löschen. 0 = nichts löschen","maximales Alter","0")
' maxage = 43200 ' 30 Tage
dim objWMIService, colItems, objItem, timestamp, age
Set objWMIService = GetObject("winmgmts:\\" & SERVER & "\root\MicrosoftDNS")
if DOMAIN = "" then
Set colItems = objWMIService.ExecQuery("Select * FROM MicrosoftDNS_AType",,48)
else
Set colItems = objWMIService.ExecQuery("Select * FROM MicrosoftDNS_AType where DomainName=""" & DOMAIN & """",,48)
end if
WScript.Echo "datetime;status;name;ip;timestamp;age"
For Each objItem In colItems
If objItem.TimeStamp > 0 Then
Timestamp = DateAdd("h", objItem.TimeStamp, "1/1/1601 00:00:00 AM")
age = datediff("n",timestamp,now)
Else
Timestamp = "0"
age = 0
End If
if (clng(age) < clng(maxage)) or (maxage = 0) then
WScript.Echo now & ";"FOUND;" & objItem.OwnerName & ";" & objItem.IPAddress & ";" & Timestamp & ";" & age
else
WScript.Echo now & ";DELETE;" & objItem.OwnerName & ";" & objItem.IPAddress & ";" & age
' objitem.delete_
end if
Next
wscript.echo "Finish"
Ich habe den Auftrag bekommen, auf unserem DNS Server nach veralteten Einträgen zu suchen und diese allenfalls zu löschen.
Dazu habe ich einen Script gefunden. Leider kenne ich mich mit Scripten absolut nicht aus..
Verstehe ich das falsch oder müsste ich beim ausführen des Scripts nach Servernamen gefragt werden? Oder muss ich den direkt in den Script eintragen?
Und sehe ich das richtig, dass keine Einträge gelöscht werden, wenn ich den Script so ausführe?
Grüsse Mücke
'-------------------------------------------------------------------------
' DNSAge
'
' Beschreibung
' Lieset das alter der DNS Einträge und löscht diese optional
'
' Voraussetzung
' - Ausführender Benutzer ist lokaler Admin auf dem DNS-server
'
' Version 1.0 FC 18. 08.2008
' Version 1.1
' neue Defaults und Inputbox
' Age in Min
' Version 1.2
' Tippfehler, vergessen 6 ;statt, etc korrigiert
' Version 1.3 FC 16.06.2009
' Vergleich war buggy da MaxAge ein String war Clng
' Offen
' Ausgabe "Deleted" ins Eventlog/Logfile
' Ausgabe Status als CSV-Datei
'-------------------------------------------------------------------------
Option Explicit
'~ On Error Resume Next
dim server, domain, maxage
Server=InputBox("Bitte DNS Servername eingeben oder . als localhost","ServerName",".")
' server = "."
domain=InputBox("Bitte DNS Zone eingeben oder leer für alle Einträge","DNSZone","")
' domain = ""
maxage=InputBox("Maximales Alter in Minuten, zum löschen. 0 = nichts löschen","maximales Alter","0")
' maxage = 43200 ' 30 Tage
dim objWMIService, colItems, objItem, timestamp, age
Set objWMIService = GetObject("winmgmts:\\" & SERVER & "\root\MicrosoftDNS")
if DOMAIN = "" then
Set colItems = objWMIService.ExecQuery("Select * FROM MicrosoftDNS_AType",,48)
else
Set colItems = objWMIService.ExecQuery("Select * FROM MicrosoftDNS_AType where DomainName=""" & DOMAIN & """",,48)
end if
WScript.Echo "datetime;status;name;ip;timestamp;age"
For Each objItem In colItems
If objItem.TimeStamp > 0 Then
Timestamp = DateAdd("h", objItem.TimeStamp, "1/1/1601 00:00:00 AM")
age = datediff("n",timestamp,now)
Else
Timestamp = "0"
age = 0
End If
if (clng(age) < clng(maxage)) or (maxage = 0) then
WScript.Echo now & ";"FOUND;" & objItem.OwnerName & ";" & objItem.IPAddress & ";" & Timestamp & ";" & age
else
WScript.Echo now & ";DELETE;" & objItem.OwnerName & ";" & objItem.IPAddress & ";" & age
' objitem.delete_
end if
Next
wscript.echo "Finish"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 119839
Url: https://administrator.de/forum/alte-dns-eintraege-via-script-loeschen-119839.html
Ausgedruckt am: 08.05.2025 um 22:05 Uhr
9 Kommentare
Neuester Kommentar

Hallo,
du kannst dem Windows DNS doch sagen, er soll einträge nach zeit x vergessen...
du kannst dem Windows DNS doch sagen, er soll einträge nach zeit x vergessen...
Hi Muecke,
Die "Inputbox" öffnet dir ein Eingabedialogfenster.
Bei
"Server = Inputbox("Bitte DNS Servernamen eingeben oder alias localhost","Servername",".") erscheint dir folgendes Eingabefenster:
Fenstertitel: "Servername"
Fensterfrage: "Bitte DNS Servernamen eingeben oder . als localhost"
Eingabefeld: "."
Das heißt, genau an dieser Stelle gibst du den DNS Servernamen ein. Das hast du richtig erkannt!
Du kannst dir mal ein Bild machen davon, indem du dir mal mit dem Texteditor folgenden Script eingibst:
dann speichere diese Datei als *.vbs ab und doppelklicke auf diese. Dann bekommst du eine "bildliche Vorstellung von dem ganzen.
Wenn noch Fragen sind, als weiter! VBS ist nicht schwer.
Gruß
Tsuki
Die "Inputbox" öffnet dir ein Eingabedialogfenster.
Bei
"Server = Inputbox("Bitte DNS Servernamen eingeben oder alias localhost","Servername",".") erscheint dir folgendes Eingabefenster:
Fenstertitel: "Servername"
Fensterfrage: "Bitte DNS Servernamen eingeben oder . als localhost"
Eingabefeld: "."
Das heißt, genau an dieser Stelle gibst du den DNS Servernamen ein. Das hast du richtig erkannt!
Du kannst dir mal ein Bild machen davon, indem du dir mal mit dem Texteditor folgenden Script eingibst:
Server=InputBox("Bitte DNS Servername eingeben oder . als localhost","ServerName",".")
MsgBox Server
Wenn noch Fragen sind, als weiter! VBS ist nicht schwer.
Gruß
Tsuki