Script de Powershell para buscar y eliminar registros DNS en múltiples zonas

Script de Powershell para buscar y eliminar registros DNS en múltiples zonas

Tenemos múltiples zonas DNS, y qué buscar registros DNS estáticos que ya no responden a los pings y eliminarlos.

He escrito un script de PS, pero tengo dos problemas.

1: la conexión de prueba falla a menos que utilice el FQDN. Parece que no puedo descubrir cómo poner el FQDN de los registros DNS fallidos en una variable que funcione con la conexión de prueba.
2: cuando intento utilizar la conexión de prueba con un dominio grande, devuelve un error de infracción de cuota.

Aquí está mi código:


$zones = Get-Content "C:\Users\ddavidson.EMF\Documents\Test\zones.txt"
$OutFile = Write-Output "C:\Users\ddavidson.EMF\Documents\Test\logfile.txt"
$hostn = Get-dnsserverresourcerecord -ComputerName "DNSBox" -zonename "ourzone.com" -RRType A
$zone = Get-DnsServerZone -ComputerName "DNSBox"
$zones = $zone.zonename
$names = $hostn.hostname
$hostna = $names + "." + $zone"

foreach ($name in $names){
 if (Test-Connection -ComputerName $names -Count 1 -ErrorAction SilentlyContinue){
    Write-Host "$name, Up"
    #Write-Output "$name, Up" | Out-File $OutFile -Append
  }
  else{
    Write-Host "$name,Down"
    #Write-Output "$name" | Out-File $OutFile -Append
    Remove-DnsServerResourceRecord -zonename "ourzone.com" -ComputerName rklw303pv -name $names -Force
  }
}

Por ahora, dejé de obtener las zonas del servidor y simplemente las codifiqué.

Soy increíblemente nuevo en PS y he estado buscando cosas que me ayuden, pero no he podido encontrar nada.

TIA para todos y cada uno.

Respuesta1

foreach ($name in $names){
 if (Test-Connection -ComputerName $names -Count 1 -ErrorAction SilentlyContinue){
    Write-Host "$name, Up"
    #Write-Output "$name, Up" | Out-File $OutFile -Append
  }
  else{
    Write-Host "$name,Down"
    #Write-Output "$name" | Out-File $OutFile -Append
    Remove-DnsServerResourceRecord -zonename "ourzone.com" -ComputerName rklw303pv -name $names -Force
  }
}

En tu test-connectionespecificas -ComputerName $nameS:

Con eso, test-connectionenviará un ping a cada entrada en $names. Además, hará ping a todo su dominio para cada miembro con el archivo foreach ($name in $names). Entonces, si tienes un dominio grande, esto puede explicar tu problema de cuota.

Puedes probar con:

if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue)

$nombre sin els

información relacionada