Скрипт Powershell для поиска и удаления записей DNS в нескольких зонах

Скрипт Powershell для поиска и удаления записей DNS в нескольких зонах

У нас есть несколько DNS-зон, и что делать, чтобы найти статические DNS-записи, которые больше не отвечают на пинги, и удалить их.

Я написал сценарий PS, но у меня возникли две проблемы.

1 - test-connection терпит неудачу, если не использует FQDN. Я не могу понять, как поместить FQDN неудачных записей DNS в переменную, которая работает с test-connection.
2 - когда я пытаюсь использовать test-connection с большим доменом, он возвращает ошибку нарушения квоты.

Вот мой код:


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

На данный момент я отказался от получения зон с сервера и просто жестко закодировал их.

Я совсем новичок в PS и искал что-то, что могло бы мне помочь, но ничего не нашел.

TIA всем и каждому.

решение1

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

В вашем test-connectionзапросе указываете -ComputerName $nameS:

При этом test-connectionбудет отправлен пинг на каждую запись в $names. Более того, вы будете пинговать весь ваш домен для каждого его члена с foreach ($name in $names). Так что если у вас большой домен, это может объяснить вашу проблему с квотой.

Вы можете попробовать с:

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

$имя безs

Связанный контент