Solved

How to programatically query DNS for records soon to expire / be scavenged?

Posted on 2008-06-11
4
878 Views
Last Modified: 2013-12-01
I would like to know if there is a way I can programatically query a windows based DNS server for records that have failed to be reregistered in a certain time frame and thus up for expiration and scavenging?

Is there a query-language for DNS? How does one use it to find this sort of information?

An example would be wonderful in c# or vb or a scripting language... anything, really.
0
Comment
Question by:DefyFate05
  • 3
4 Comments
 
LVL 70

Expert Comment

by:Chris Dent
Comment Utility

Hey there,

It's all exposted in WMI.

I have VbScript or PowerShell versions to find this kind of thing. The PowerShell version is a hell of a lot neater / more flexible / more reliable.

Copy and paste this, fixing the Domain Name and Server Name.

Listing All Stale Records within a given Domain:

$DNSServer = "YourServerName"
$Domain = "YourDomain"

Get-WMIObject -Class "MicrosoftDNS_AType" -Namespace `
    "root\MicrosoftDNS" -Comp $DNSServer -Filter "DomainName='$Domain'" | `
    Select-Object `
    OwnerName,@{n="TimeStamp";e={(Get-Date("01/01/1601")).AddHours($_.TimeStamp)}} `
    | ?{($_.TimeStamp -lt ((Get-Date).AddDays(-14))) -and ($_.TimeStamp -ne (Get-Date("01/01/1601")))}

Note the use of "AddDays(-14)", that means we're only looking for entries where the TimeStamp is more than 14 days old, it assumes you're using 7 Days No-Refresh and 7 Days Refresh, change as appropriate.

HTH

Chris
0
 
LVL 70

Expert Comment

by:Chris Dent
Comment Utility

Oh yeah, just for interest, this is a modification of it to show Static Records:

$DNSServer = "YourServerName"
$Domain = "YourDomain"

Get-WMIObject -Class "MicrosoftDNS_AType" -Namespace `
    "root\MicrosoftDNS" -Comp $DNSServer -Filter "DomainName='$Domain'" | `
    Select-Object `
    OwnerName,@{n="TimeStamp";e={(Get-Date("01/01/1601")).AddHours($_.TimeStamp)}} `
    | ?{$_.TimeStamp -eq (Get-Date("01/01/1601"))}

TimeStamp is always 0 for Static Records, so the adjusted time always ends up being 01/01/1601.

Chris
0
 

Author Comment

by:DefyFate05
Comment Utility
Can you throw the vbscript version up?

0
 
LVL 70

Accepted Solution

by:
Chris Dent earned 250 total points
Comment Utility

Certainly, here we go.

Chris
' No-Refresh + Refresh

Const MAXIMUM_AGE = 4

 

' DNS Server Name ("." if run locally)

Const SERVER_NAME = "."

 

' Domain Name to check 

' WMI query returns A records from all zones without WHERE filter

' Domain Name should be lower case and should not include trailing "."

Const DOMAIN_NAME = "domain.local"

 

Set objWMIService = GetObject("winmgmts:\\" & SERVER_NAME & "\root\MicrosoftDNS")

 

Set colItems = objWMIService.ExecQuery("SELECT * FROM MicrosoftDNS_AType WHERE " &_

        "DomainName='" & DOMAIN_NAME & "'")

 

Set objFileSystem = CreateObject("Scripting.FileSystemObject")

Set objFile = objFileSystem.OpenTextFile("StaleRecords.csv", 2, True, 0)

 

objFile.WriteLine "FQDN,IPAddress,TimeStamp"

 

For Each objItem In colItems

	' If InStr(1, objItem.DomainName, DOMAIN_NAME, VbTextCompare) > 0 Then

	        If objItem.TimeStamp > 0 Then

        	        dtmTimeStamp = DateAdd("h", objItem.TimeStamp, "1/1/1601 00:00:00 AM")

 

 

 	               If dtmTimeStamp <= (Date - MAXIMUM_AGE) Then

                	        objFile.WriteLine objItem.OwnerName & "," & objItem.IPAddress &_

        	                        "," & dtmTimeStamp

	                End If

        	End If

	' End If

Next

 

Set objFile = Nothing

Set objFileSystem = Nothing

 

Set colItems = Nothing

Set objWMIService = Nothing

Open in new window

0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Remote Apps is a feature in server 2008 which allows users to run applications off Remote Desktop Servers without having to log into them to run the applications.  The user can either have a desktop shortcut installed or go through the web portal to…
I. Introduction There's an interesting discussion going on now in an Experts Exchange Group — Attachments with no extension (http://www.experts-exchange.com/discussions/210281/Attachments-with-no-extension.html). This reminded me of questions tha…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now