Windows OS Hub
  • Windows
    • Windows 11
    • Windows Server 2022
    • Windows 10
    • Windows Server 2019
    • Windows Server 2016
  • Microsoft
    • Active Directory (AD DS)
    • Group Policies (GPOs)
    • Exchange Server
    • Azure and Microsoft 365
    • Microsoft Office
  • Virtualization
    • VMware
    • Hyper-V
  • PowerShell
  • Linux
  • Home
  • About

Windows OS Hub

  • Windows
    • Windows 11
    • Windows Server 2022
    • Windows 10
    • Windows Server 2019
    • Windows Server 2016
  • Microsoft
    • Active Directory (AD DS)
    • Group Policies (GPOs)
    • Exchange Server
    • Azure and Microsoft 365
    • Microsoft Office
  • Virtualization
    • VMware
    • Hyper-V
  • PowerShell
  • Linux

 Windows OS Hub / PowerShell / Create & Manage DNS Zones and Records with PowerShell

April 3, 2023

Create & Manage DNS Zones and Records with PowerShell

A Windows administrator can use the good old Dnscmd cli tool or DNSServer module for PowerShell to manage DNS zones and records. In this article we’ll cover the basic operations of bulk creating, modification, and removing different DNS records or zones using PowerShell.

Contents:
  • DNSServer PowerShell Module
  • Manage DNS Zones with PowerShell
  • Managing DNS Records with DNSServer PowerShell Module
  • How to Create Multiple A and PTR DNS Records from a .CSV File?

DNSServer PowerShell Module

The DNSServer module for PowerShell is a part of RSAT. On Windows 10 you will have to install RSAT separately, and on Windows Server you can enable the module using Server Manager GUI (Role Administration Tools -> DNS Server Tools).

install DNS Server Tools with DNSServer module for PowerShell

Make sure the DNSServer PowerShell module is install on your computer:

Get-Module DNSServer –ListAvailable

You can display the list of commands in it (the module version for Windows Server 2016 has 134 cmdlets):

Get-Module DNSServer

Get-Module DNSServer

Manage DNS Zones with PowerShell

Display the list of DNS zones on your server (in our case, it is a domain controller):

Get-DnsServerZone –ComputerName dc01

To add a new primary DNS zone named woshub.com, run this command:

Add-DnsServerPrimaryZone -Name woshub.com -ReplicationScope "Forest" –PassThru

As you can see, the primary DNS zone integrated into Active Directory has been created (isDsIntegrated=True).

Add-DnsServerPrimaryZone

You can create a Reverse Lookup Zone:

Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ReplicationScope Domain

To synchronize a new zone with other DCs in the domain, run the following command:

Sync-DnsServerZone –passthru

Display the list of records in the new DNS zone (it is empty):

Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local

Get-DnsServerResourceRecord

To remove the DNS zone, use the command:

Remove-DnsServerZone -Name woshub.com -ComputerName dc01

It will also remove all existing DNS records in the zone.

Managing DNS Records with DNSServer PowerShell Module

To create a new A record for the host in the specified DNS zone, use this command:

Add-DnsServerResourceRecordA -Name ber-rds1 -IPv4Address 192.168.100.33 -ZoneName woshub.com -TimeToLive 01:00:00

To add a PTR record to the Reverse Lookup Zone, you can add –CreatePtr parameter to the previous command or create the pointer manually using the Add-DNSServerResourceRecordPTR cmdlet:

Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.woshub.com

To add an alias (CNAME) for the specific A record, run this command:

Add-DnsServerResourceRecordCName -ZoneName woshub.com -Name Ber-RDSFarm -HostNameAlias ber-rds1.woshub.com

To change (update) the IP address in the A record, you will have to apply quite a complex method since you cannot change an IP address of a DNS record directly:

$NewADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01
$OldADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01

Then change the IPV4Address property of the $NewADNS object:

$NewADNS.RecordData.IPv4Address = [System.Net.IPAddress]::parse('192.168.100.133')

Change the IP address of the A record using the Set-DnsServerResourceRecord cmdlet:

Set-DnsServerResourceRecord -NewInputObject $NewADNS -OldInputObject $OldADNS -ZoneName woshub.com -ComputerName dc01

Make sure that the IP address of the A record has changed:

Get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com

Change/Update DNS Host Record IP Address via PowerShell

You can display the list of DNS records of the same type by using the –RRType parameter. Let’s display the list of CNAME records in the specified DNS zone:

Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName woshub.com -RRType CNAME

Get-DnsServerResourceRecord RRType

You can also use filters by any DNS record parameters using Where-Object. For example, to display the list of A records containing rds phrase in their hostnames:

Get-DnsServerResourceRecord -ZoneName woshub.com -RRType A | Where-Object HostName -like "*rds*"

Get-DnsServerResourceRecord Where-Object HostName like

To remove DNS records, the Remove-DnsServerResourceRecord cmdlet is used.

For example, to remove a CNAME record, run the command:

Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType CName -Name Ber-RDSFarm

To remove an A DNS record:

Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType A -Name ber-rds1 –Force

To remove a PTR record from a Reverse Lookup Zone:

Remove-DnsServerResourceRecord -ZoneName “100.168.192.in-addr.arpa” -RRType “PTR” -Name “33”

How to Create Multiple A and PTR DNS Records from a .CSV File?

Suppose, you want to create multiple A records at a time in the specific DNS Forward Lookup Zone. You can add them one-by-one using the Add-DnsServerResourceRecordA cmdlet, but it is easier to add A records in bulk from a .CSV file.

Create a text file NewDnsRecords.txt with the names and IP addresses you want to add to DNS. The txt file format is as follows:

HostName, IPAddress

Adding Multiple DNS Records From .TXT/ .CSV File with PowerShell Script

To create A records in the woshub.com zone according to the data in your TXT/CSV file, use the following PowerShell script:

Import-CSV "C:\PS\NewDnsRecords.txt" | %{
Add-DNSServerResourceRecordA -ZoneName woshub.com -Name $_."HostName" -IPv4Address $_."IPAddress"
}

If you want to add records to the Reverse Lookup Zone at the same time, add the –CreatePtr parameter to your Add-DNSServerResourceRecordA command.

Then using DNS Manager console (dnsmgmt.msc) or Get-DnsServerResourceRecord -ZoneName woshub.local make sure that all DNS records have been created successfully.

Bulk add DNS recordes using PoweShell

If you want to add PTR records to the Reverse Lookup Zone in bulk, create a text or a CSV file with the following structure:

octet,hostName,zoneName
102,ber-rds2.woshub.com,100.168.192.in-addr.arpa
103,ber-rds3.woshub.com,100.168.192.in-addr.arpa
104,ber-rds4.woshub.com,100.168.192.in-addr.arpa
105,ber-rds5.woshub.com,100.168.192.in-addr.arpa

Then run the script:

Import-CSV "C:\PS\NewDnsPTRRecords.txt" | %{
Add-DNSServerResourceRecordPTR -ZoneName $_."zoneName" -Name $_."octet" -PTRDomainName $_."hostName"
}

Make sure that your PTR records appeared in the DNS Reverse Lookup Zone.

6 comments
9
Facebook Twitter Google + Pinterest
PowerShellWindows Server 2016
previous post
Transferring/Seizing FSMO Roles to Another Domain Controller
next post
How to Configure MariaDB Master-Master/Slave Replication

Related Reading

Protecting Remote Desktop (RDP) Host from Brute Force...

February 5, 2024

How to Refresh (Update) Group Policy Settings on...

August 13, 2024

Get-ADDomainController: Getting Domain Controllers Info via PowerShell

July 8, 2022

How to Uninstall Built-in UWP (APPX) Apps on...

June 6, 2024

Repairing the Domain Trust Relationship Between Workstation and...

May 16, 2024

Backing Up Active Directory with Windows Server Backup

November 26, 2024

Generating Strong Random Password with PowerShell

January 31, 2020

Disks and Partitions Management with Windows PowerShell

March 11, 2024

6 comments

Katie June 19, 2020 - 1:37 pm

Thank you for this post! Very awsome and very helpful!

Reply
Learoy Ellis-Moore February 5, 2021 - 9:36 pm

You are an OG baller, thanks so much i have been playing wither server core and trying to create a AD using powershell however NSLOOKUP return no server name as i had no reverse lookup so need to find info on how to create a reverse dns entry

Reply
Dhananjay October 6, 2021 - 3:36 pm

Thank you so much, it works well but you need to add -computername switch at the end of the command (in case you are running this command from terminal server and not DNS/DC)

Reply
MaMe May 15, 2025 - 5:25 pm

Hi…hope you are still online 😉
First of all thanks for the script.
Unfortunately in my case, it always create a subzone e.G. in your example a subzone .com and in this subzone an entry woshub
What I am doing wrong. I am on Server 2025

Reply
admin May 21, 2025 - 9:32 am

Show the PowerShell command you use to create a subzone.

Reply
MaMe May 22, 2025 - 2:41 pm

Hi…sorry forgot to write back as it was a typo in my script. THX anyway for your reply.

Reply

Leave a Comment Cancel Reply

join us telegram channel https://t.me/woshub
Join WindowsHub Telegram channel to get the latest updates!

Recent Posts

  • Map a Network Drive over SSH (SSHFS) in Windows

    May 13, 2025
  • Configure NTP Time Source for Active Directory Domain

    May 6, 2025
  • Cannot Install Network Adapter Drivers on Windows Server

    April 29, 2025
  • Change BIOS from Legacy to UEFI without Reinstalling Windows

    April 21, 2025
  • How to Prefer IPv4 over IPv6 in Windows Networks

    April 9, 2025
  • Load Drivers from WinPE or Recovery CMD

    March 26, 2025
  • How to Block Common (Weak) Passwords in Active Directory

    March 25, 2025
  • Fix: The referenced assembly could not be found error (0x80073701) on Windows

    March 17, 2025
  • Exclude a Specific User or Computer from Group Policy

    March 12, 2025
  • AD Domain Join: Computer Account Re-use Blocked

    March 11, 2025

Follow us

  • Facebook
  • Twitter
  • Telegram
Popular Posts
  • How to Download Offline Installer (APPX/MSIX) for Microsoft Store App
  • Get-ADUser: Find Active Directory User Info with PowerShell
  • How to Hide Installed Programs in Windows 10 and 11
  • Using Credential Manager on Windows: Ultimate Guide
  • Managing Printers and Drivers on Windows with PowerShell
  • PowerShell: Get Folder Size on Windows
  • Protecting Remote Desktop (RDP) Host from Brute Force Attacks
Footer Logo

@2014 - 2024 - Windows OS Hub. All about operating systems for sysadmins


Back To Top