Advanced Windows PowerShell Scripting Video Training

Advanced Windows PowerShell Scripting Video Training
Advanced Windows PowerShell Scripting Video Training

Thursday, September 29, 2011

How to force a DNS zone to replicate with PowerShell

For many implementations of DNS in a Windows environment, DNS is configured as being Active Directory integrated. In other words, the DNS zone information is actually stored as a partition in the active directory database. When Active Directory replicates, the zone data transfers. For standard DNS deployments, the data is stored in a file. You have to configure zone transfers manually in the DNS console.

The question in class was how to initiate replication manually. Once you have properly configured a Primary and secondary DNS server and configured the Primary server to allow zone transfers, you can manually initiate a zone transfer.

Below you can see our test environment. The image is of to RDP sessions to two different servers. The DNS console on the left is the primary. You can see and entry for Test2 that is not in the secondary database. The servers are named NYC-DC2 (Primary DNS) and NYC-DC1 (Secondary DNS). The DNS zone is named


Now, open PowerShell

We are going to need to call on WMI to help us with this one. 


Get-WMIObject –namespace “Root\MicrosoftDNS” –class MicrosoftDNS_Zone | Format-List Name


We can see the names of the zones on this DNS server.  Next we filter the query so only the zone we are interested in is left.

Get-WMIObject –namespace “Root\MicrosoftDNS” –class MicrosoftDNS_Zone | Where-Object {$_.Name –eq “Test.Contoso.Com”}


We are now going to execute the ForceRefresh method on this server.  Remember, we are on the secondary server.  You can look up more methods that are available through the MicrosoftDNS_Zone class here.


(Get-WMIObject –namespace “Root\MicrosoftDNS” –class MicrosoftDNS_Zone | Where-Object {$_.Name –eq “Test.Contoso.Com”}).ForceRefresh()


After a refresh of the DNS console on the secondary server, the data should now be transferred.  Notice that in the above command that there are two parenthesis.  Careful when you type.

No comments: