We've been moving data centers and I have a lot of old records that were not correctly but in DNS as CNAME records, but A records that have a direct IP (e.g. 192.168.100.n) and they're all moving to a new subnet (10.19.100.n).
I just need to write a powershell script to change all those records. I found this site:
http://www.indented.co.uk/index.php/2008/12/30/administering-microsoft-dns-in-powershell/
and from it I made this simple script:
$dnsServer = "meldc2"
$scope = New-Object Management.ManagementScope("\\$dnsServer\root\MicrosoftDNS")
$path = New-Object Management.ManagementPath("MicrosoftDNS_Zone")
$options = New-Object Management.ObjectGetOptions($Null,[System.TimeSpan]::MaxValue, $True)
$ZoneClass= New-Object Management.ManagementClass($scope,$path,$options)
$Zones = Get-WMIObject -Computer $dnsServer -Namespace "root\MicrosoftDNS" -Class "MicrosoftDNS_Zone"
$Zones | Get-Member
foreach($Z in $Zones) {
$Z | Select-Object Name,DsIntegrated,ZoneType,Reverse,Data
}
but that only gets me a listing of root zones. I don't understand how to iterate over all the entries in each of the zones. Also, all the examples I've seen involve adding new zones, but there aren't any examples I can find on modifying existing A records.
I would use
dnscmd
for modifying DNS records:This can be wrapped in a loop in either
batch
orPowerShell
, e.g. like this: