用於跨多個區域尋找和刪除 DNS 記錄的 Powershell 腳本

用於跨多個區域尋找和刪除 DNS 記錄的 Powershell 腳本

我們有多個 DNS 區域,以及如何尋找不再回應 ping 的靜態 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。此外,您將使用 .ping 來 ping 其每個成員的所有網域foreach ($name in $names)。因此,如果您有一個大域名,它可以解釋您的配額問題。

您可以嘗試使用:

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

$name 不含s

相關內容