Solved

DNS Export List Command Line or Script?

Posted on 2008-06-17
5
1,886 Views
Last Modified: 2008-07-04
On a Server 2003 DNS server, I can go into DNS and right-click a zone and "Export List".

Is there a way to do this in a command line or in a script, such as WMI?

I tried using dnscmd /WriteBackZone ("write back zone to file") but it won't let me specify the file and I can't find any file that it supposedly wrote back to.

I don't care what the method is, as long as I can incorporate it into some kind of script.

Thanks.
0
Comment
Question by:gateguard
  • 3
5 Comments
 

Expert Comment

by:jlib99
ID: 21803532
0
 
LVL 70

Accepted Solution

by:
Chris Dent earned 500 total points
ID: 21804380

All files written by DNSCMD are placed in %SystemRoot%\System32\DNS\.

You can export the zone in it's entirety. e.g.:

dnscmd server1 /ZoneExport domain.com domain.com.dns.txt

Where domain.com.dns.txt is the file name and will be in the path above on server1.

It is all exposed in WMI as well, so, depending on what you'd like to do with it, you might find that more useful. I can provide specific examples if you need.

Chris
0
 

Author Comment

by:gateguard
ID: 21805093
Thanks, Chris.  /ZoneExport only works on 2003 servers and I want to run the script from a 2000 server so if you happen to have a WMI script to do the same thing I would be greatly grateful.
0
 
LVL 70

Expert Comment

by:Chris Dent
ID: 21916176

Sure, give me a little time, I'll have to rebuild the zone entirely from the various pieces of WMI.

Afraid I have nothing to test it against either, I'll have to bug you to do that bit for me :)

Chris
0
 
LVL 70

Expert Comment

by:Chris Dent
ID: 21933312

This will build a fairly basic version of the zone from WMI. Correct the File and Zone name values at the top.

Service Records are quite a bother to extract, do you need those?

Chris


Const ZONE_NAME = "domain.com"

Const ZONE_FILE = "domain.com.dns"
 

Function GetSOARecord

	Dim colItems

	Dim objItem

	Dim strRecord
 

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

		"WHERE DomainName='" & ZONE_NAME & "'", "WQL")
 

	For Each objItem in colItems

		strRecord = "@" & VbTab & " IN SOA " & objItem.RecordData & VbCrLf

	Next
 

	Set colItems = Nothing
 

	GetSOARecord = strRecord

End Function
 

Function GetNSRecords

	Dim colItems

	Dim objItem

	Dim strRecords
 

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

		"WHERE DomainName='" & ZONE_NAME & "'", "WQL")
 

	For Each objItem in colItems

		strRecords = strRecords & "@" & VbTab & " IN NS " &_

			objItem.RecordData & VbCrLf

	Next
 

	Set colItems = Nothing
 

	GetNSRecords = strRecords

End Function
 

Function GetMXRecords

	Dim colItems

	Dim objItem

	Dim strRecords
 

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

		"WHERE DomainName='" & ZONE_NAME & "'", "WQL")
 

	For Each objItem in colItems

		strRecords = strRecords & "@" & VbTab & " IN MX " &_

			objItem.RecordData & VbCrLf

	Next
 

	Set colItems = Nothing
 

	GetMXRecords = strRecords

End Function
 

Function GetCNAMERecords

	Dim colItems

	Dim objItem

	Dim strRecords, strNode
 

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

		"WHERE DomainName='" & ZONE_NAME & "'", "WQL")
 

	For Each objItem in colItems

		strNode = Replace(objItem.OwnerName, "." & ZONE_NAME, "", 1, -1, VbTextCompare)

		strRecords = strRecords & strNode & VbTab & " IN CNAME " &_

			objItem.RecordData & VbCrLf

	Next
 

	Set colItems = Nothing
 

	GetCNAMERecords = strRecords

End Function
 

Function GetARecords

	Dim colItems

	Dim objItem

	Dim strRecords, strNode
 

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

		"WHERE DomainName='" & ZONE_NAME & "'", "WQL")
 

	For Each objItem in colItems

		strNode = Replace(objItem.OwnerName, "." & ZONE_NAME, "", 1, -1, VbTextCompare)

		strRecords = strRecords & strNode & VbTab & " IN A " &_

			objItem.RecordData & VbCrLf

	Next
 

	Set colItems = Nothing
 

	GetARecords = strRecords

End Function
 
 

Dim objWMIService, objFileSystem, objFile
 

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

Set objFileSystem = CreateObject("Scripting.FileSystemObject")

Set objFile = objFileSystem.OpenTextFile(ZONE_FILE, 2, True, 0)
 

objFile.WriteLine GetSOARecord

objFile.WriteLine GetNSRecords

objFile.WriteLine GetMXRecords

objFile.WriteLine GetCNAMERecords

objFile.WriteLine GetARecords
 

Set objFile = Nothing

Set objFileSystem = Nothing
 

Set objWMIService = Nothing

Open in new window

0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

This article explains how a domain name may be inadvertently appended to all DNS queries. This exhibits as described below. (CODE)And / Or: (CODE) Cause This issue can occur in either of these two scenarios. EITHER 1. A Primary DNS S…
If you have a multi-homed DNS setup in windows, you can have issues with connectivity to the server that hosts the DNS services (or even member servers of your domain if this same DNS server is a DC). This is because windows registers all of its IPs…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

747 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

12 Experts available now in Live!

Get 1:1 Help Now