Script Powershell para localizar e excluir registros DNS em várias zonas

Script Powershell para localizar e excluir registros DNS em várias zonas

Temos várias zonas DNS e como encontrar registros DNS estáticos que não respondem mais aos pings e excluí-los.

Escrevi um script PS, mas estou tendo dois problemas.

1 - a conexão de teste falha, a menos que use o FQDN. Não consigo descobrir como colocar o FQDN de registros DNS com falha em uma variável que funciona com conexão de teste.
2 - quando tento usar test-connection com um domínio grande, ele retorna um erro de violação de cota.

Aqui está meu 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 enquanto, deixei de lado a obtenção das zonas do servidor e apenas codifiquei-as.

Sou incrivelmente novo no PS e tenho procurado coisas para me ajudar, mas não consegui encontrar nada.

TIA para todo e qualquer um.

Responder1

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
  }
}

No seu test-connectionvocê especifica -ComputerName $nameS:

Com isso, test-connectionenviaremos um ping para cada entrada no arquivo $names. Além disso, você fará ping em todo o seu domínio para cada membro dele com a extensão foreach ($name in $names). Portanto, se você tiver um domínio grande, isso pode explicar o seu problema de cota.

Você pode tentar com:

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

$nome sem os

informação relacionada