With PowerShell v3 comes some new DNS cmdlets. One of them is the Export-DnsServerZone cmdlet. This replaces some of the functionality of the old “DnsCmd” command line utility.
Actually, if you run DnsCmd on Windows 2012, it actually tells you that if you currently use DnsCmd.exe to configure and manage the DNS server, Microsoft recommends that you transition to Windows PowerShell.
So, on to Export-DnsServerZone. I thought great, that’s excellent news, instead of having to worry about getting PowerShell to execute the old dnscmd.exe and worry about its arguments etc., I’ll use the built in cmdlet to do the job.
Here is an example of what the command looks like.
If you were to substitute the name for the DNS zone you would like to export, and the filename for something that better describes your zone, that example will output a text file in to the %windir%\system32\dns folder.
So then, you can have your backup software come along and back it all up for you and everyone is happy.
Except, if you would like to modify that –Filename parameter to have it point to an actual file location like “C:\export.txt”. It doesn’t seem to work and you will get an error saying “Export-DnsServerZone : Failed to export the zone content for <your domain> on server <your server> to the file
<your file location>”
When you look up the online help for the cmdlet, it does specify that you can put a file path in the parameter. As shown below.
It doesn’t seem to accept UNC path either.
But it does seem to accept, a relative path. (The following command should put the text document in the root of C:\.
Here is the link to the online help for the Export-DnsServerZone cmdlet.