여러 영역에서 DNS 레코드를 찾고 삭제하는 Powershell 스크립트

여러 영역에서 DNS 레코드를 찾고 삭제하는 Powershell 스크립트

여러 개의 DNS 영역이 있으며 더 이상 핑에 응답하지 않는 정적 DNS 레코드를 찾아서 삭제하는 방법은 무엇입니까?

PS 스크립트를 작성했지만 두 가지 문제가 있습니다.

1 - FQDN을 사용하지 않으면 연결 테스트가 실패합니다. 실패한 DNS 레코드의 FQDN을 테스트 연결에서 작동하는 변수에 넣는 방법을 찾을 수 없는 것 같습니다.
2 - 대규모 도메인에서 테스트 연결을 사용하려고 하면 할당량 위반 오류가 반환됩니다.

내 코드는 다음과 같습니다.


$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각 항목에 ping을 보냅니다 $names. 또한 foreach ($name in $names). 따라서 큰 도메인을 가지고 있다면 할당량 문제를 설명할 수 있습니다.

다음을 시도해 볼 수 있습니다.

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

$name 없이s

관련 정보