4 votos

Usando PowerShell, en Active Directory, ¿cómo sería cambiar todos los registros DNS A que tienen una determinada IP a una IP nueva?

Hemos estado moviendo los centros de datos y tengo un montón de discos antiguos que no fueron correctamente, pero en el DNS como los registros CNAME, pero los registros que tienen una IP directa (por ejemplo, 192.168.100.n) y todos están moviendo a una nueva subred (10.19.100.n).

Sólo tengo que escribir un script de powershell para cambiar todos los registros. Me encontré con este sitio:

http://www.indented.co.uk/index.php/2008/12/30/administering-microsoft-dns-in-powershell/

y desde que he hecho este sencillo 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
}

pero eso solo me pone un listado de zonas radiculares. No entiendo cómo iterar sobre todas las entradas en cada una de las zonas. También, en todos los ejemplos que he visto implican la adición de nuevas zonas, pero no hay ejemplos de lo que puede encontrar en la modificación de los registros.

4voto

Ansgar Wiechers Puntos 3408

¿Usar dnscmd para modificar los registros DNS:

dnscmd meldc2.example.com /recorddelete example.com A host.example.com
dnscmd meldc2.example.com /recordadd example.com host A 10.19.100.n

Esto se puede envolver en un bucle en cualquiera batch o PowerShell , por ejemplo como esta:

$domain = "example.com"
dnscmd /enumrecords $domain `@ /type A | % {
  $name = $_.split(" ")[0]
  $ip = $_.split("`t")[-1] -replace "192.168.100", "10.19.100"
  dnscmd /recorddelete $domain A "$name.$domain"
  dnscmd /recordadd $domain $name A $ip
}

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: