Powershell-Skript zum Suchen und Löschen von DNS-Einträgen in mehreren Zonen

Powershell-Skript zum Suchen und Löschen von DNS-Einträgen in mehreren Zonen

Wir haben mehrere DNS-Zonen und möchten statische DNS-Einträge finden, die nicht mehr auf Pings reagieren, und diese löschen.

Ich habe ein PS-Skript geschrieben, habe aber zwei Probleme.

1 – Test-Connection schlägt fehl, wenn nicht der FQDN verwendet wird. Ich kann nicht herausfinden, wie ich den FQDN fehlgeschlagener DNS-Einträge in eine Variable einfüge, die mit Test-Connection funktioniert.
2 – Wenn ich versuche, Test-Connection mit einer großen Domäne zu verwenden, wird ein Kontingentverletzungsfehler zurückgegeben.

Hier ist mein Code:


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

Ich habe vorerst darauf verzichtet, die Zonen vom Server abzurufen, und es nur fest codiert.

Ich bin völlig neu bei PS und habe nach Dingen gesucht, die mir helfen könnten, aber nichts gefunden.

TIA an alle.

Antwort1

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

In Ihrem test-connectiongeben Sie an -ComputerName $nameS:

Damit test-connectionwird ein Ping an jeden Eintrag in gesendet $names. Darüber hinaus pingen Sie mit alle Ihre Domänen für jedes Mitglied an foreach ($name in $names). Wenn Sie also eine große Domäne haben, kann dies Ihr Quotenproblem erklären.

Sie können es mit Folgendem versuchen:

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

$name ohne dens

verwandte Informationen