need a powershell script to modify a set of DNS records - bulk

can someone provide a script that we can run to update [modify] the IP address on a set of records.

sample would be:

record:                                 New IP
www.domaina.com            192.168.10.1
www.domainb.com            192.168.10.1
www.domainc.com             192.168.10.1
www.domaind.com             192.168.10.1

thanks in advance.

S.
siber1Asked:
Who is Participating?
 
becraigConnect With a Mentor Commented:
Let's assume the zone is in the same csv as the other fields:
# Environment Setup 
$DNSServer = "YourDNSServer" 
$InputFile = "dnsrecords.csv" 
 
# Read the input file which is formatted as name,type,address with a header row 
$records = Import-CSV $InputFile 
 
# Now we loop through the file to delete and re-create records 
# DNSCMD does not have a modify option so we must use /RecordDelete first followed by a /RecordAdd  
 
ForEach ($record in $records) { 
 
    # Capture the record contents as variables 
    $recordName = $record.name 
    $DNSZone =  $record.zone
    $recordType = $record.type 
    $recordAddress = $record.address 
 
    # Build our DNSCMD DELETE command syntax 
    $cmdDelete = "dnscmd $DNSServer /RecordDelete $DNSZone $recordName $recordType /f" 
 
    # Build our DNSCMD ADD command syntax 
    $cmdAdd = "dnscmd $DNSServer /RecordAdd $DNSZone $recordName $recordType $recordAddress" 
 
    # Now we execute the command 
    Write-Host "Running the following command: $cmdDelete" 
    Invoke-Expression $cmdDelete 
 
    Write-Host "Running the following command: $cmdAdd" 
    Invoke-Expression $cmdAdd 
}

Open in new window


Updated above to call the zone from your csv file (using the assumption the field is zone it is set above to  $DNSZone =  $record.zone
0
 
Will SzymkowskiSenior Solution ArchitectCommented:
There are no native Powershell cmdlets to accomplish what you are doing for server 2008. If you are using Server 2012 you can do this natively.

For server 2008 there has been a script to accomplish this using dnscmd to modify DNS records.

PS Script Download - http://gallery.technet.microsoft.com/scriptcenter/Update-DNS-records-with-da10910d

You will need to add your list of computers to the script via CSV file.

You can use the below script to get a list of computers from the DisabledComputers OU and then export them to a csv file. From there you put the file path into the PS script found at the download link...

Get-ADComputer -Filter * -SearchBase "OU=DisabledComputers,DC=domain,DC=com" | select DNSHostName | Export-csv "c:\computers.csv"

PAQ (still open) - http://www.experts-exchange.com/Software/Server_Software/File_Servers/Active_Directory/Q_28275106.html

Will.
0
 
becraigCommented:
Are you hoping to an additional record or remove the old one and create a new record ?

Here is an already scripted solution using dnscmd.
http://gallery.technet.microsoft.com/scriptcenter/Update-DNS-records-with-da10910d

The concept is simple you feed in values such as your dns server, zone name and an input file with the records you want to update eg. Record, IP
# Environment Setup 
$DNSServer = "YourDNSServer" 
$DNSZone = "YourZoneName" 
$InputFile = "dnsrecords.csv" 
 
# Read the input file which is formatted as name,type,address with a header row 
$records = Import-CSV $InputFile 
 
# Now we loop through the file to delete and re-create records 
# DNSCMD does not have a modify option so we must use /RecordDelete first followed by a /RecordAdd  
 
ForEach ($record in $records) { 
 
    # Capture the record contents as variables 
    $recordName = $record.name 
    $recordType = $record.type 
    $recordAddress = $record.address 
 
    # Build our DNSCMD DELETE command syntax 
    $cmdDelete = "dnscmd $DNSServer /RecordDelete $DNSZone $recordName $recordType /f" 
 
    # Build our DNSCMD ADD command syntax 
    $cmdAdd = "dnscmd $DNSServer /RecordAdd $DNSZone $recordName $recordType $recordAddress" 
 
    # Now we execute the command 
    Write-Host "Running the following command: $cmdDelete" 
    Invoke-Expression $cmdDelete 
 
    Write-Host "Running the following command: $cmdAdd" 
    Invoke-Expression $cmdAdd 
}

Open in new window



You can visit the link above for a detailed explanation on usage.
0
Improved Protection from Phishing Attacks

WatchGuard DNSWatch reduces malware infections by detecting and blocking malicious DNS requests, improving your ability to protect employees from phishing attacks. Learn more about our newest service included in Total Security Suite today!

 
siber1Author Commented:
becraig, this appears to be specific to a single zone. in my case each line item is a different zone in the csv.  thx
0
 
becraigCommented:
You can simply modify the zone input:
is the zone in the same csv as the record and IP ?
0
 
siber1Author Commented:
but your script asks for the zone in the environmental setup at the top
0
 
footechCommented:
0
 
siber1Author Commented:
thanks, sorry for the delay, was out of town. that works great.

S.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.