簡體   English   中英

檢查 DNS 以查看記錄是否存在

[英]Check DNS to see if Record Exists

我正在嘗試創建一個 PowerShell 腳本來執行以下操作:

  1. 打開我的 CSV 文件。 A 列包含服務器的主機名。 B 列有 IP 地址
  2. 然后我想查看主機名是否存在於 DNS 中。 我檢查第一個主機名,如果主機存在,則繼續檢查下一個主機名。 如果沒有,請將新的 A-Record 添加到具有主機名和 ip 的 DNS 中。

我的問題是,當它檢查 DNS 中是否存在記錄時,它說該記錄不存在,然后嘗試創建它,而實際上它確實存在於 DNS 中。 這是我的腳本:

# Declare Variables. These variables are different in each domain
$ZoneName = "domain.com"
$DNSServer = "domain1.domain.com"
$ExistsInDNS = "C:\myScripts\DNSScavenging\RestoreDNSRecords\ExistsInDNS.txt"
$RestoredToDNS = "C:\myScripts\DNSScavenging\RestoreDNSRecords\RestoredToDNS.txt"

$DNSRecords = Import-Csv -path "C:\myScripts\DNSScavenging\RestoreDNSRecords\dnsrestoretest.csv" -Header "Server","IP"  

foreach ($DNSRecord in $DNSRecords){

    # Check DNS to see if the Server and IP exists
    write-host "Checking to see if $($DNSRecord.Server) exists in DNS"
    $DNSCheck = [System.Net.DNS]::GetHostByName($DNSRecord.Server)                   
    if ($($DNSCheck.HostName) -contains $($DNSRecord.Server)) {         
        write-host "$($DNSRecord.Server) $($DNSRecord.IP) exists in DNS" -ForegroundColor "Green" 
        write-output "$($DNSRecord.Server) $($DNSRecord.IP)" | out-file $ExistsInDNS -Append
    } else { 
        write-host "$($DNSRecord.Server) $($DNSRecord.IP) does not exist in DNS.  Restoring $($DNSRecord.Server) $($DNSRecord.IP) in DNS" -ForegroundColor "Yellow"
        write-output "$($DNSRecord.Server) $($DNSRecord.IP)"  | out-file $RestoredToDNS -Append
        # Add record into DNS   
        Add-DnsServerResourceRecordA -ComputerName $DNSServer -ZoneName "$ZoneName" -Name $DNSRecord.Server -AllowUpdateAny -IPv4Address $DNSRecord.IP
    }
}

我建議你使用:

Resolve-DnsName -Name "DNSEntry" -Server "yourserver"

這樣你就可以直接檢查你的目標 dns 服務器,你只需要檢查它是否返回 true。

對於偶然發現此問題的任何其他人,我會為您節省幾個小時的時間。 像下面這樣格式化 .csv,包括標題,但在這種情況下不要使用 fqdn,只使用主機名。

name,ip
testnameexample,192.168.1.1

並使用此代碼:

#Declare Variables. These variables are different in each domain
$ZoneName = "yourdomain.com"
#$DNSServer = "yourdnsserver.yourdomain.com"
$ExistsInDNS = "C:\temp\ExistsInDNS.txt"
$RestoredToDNS = "C:\temp\AddedToDNS.txt"

$DNSRecords = Import-Csv -path "C:\temp\IP_LIST.csv" -Header "name","ip"  

foreach ($DNSRecord in $DNSRecords){

    # Check DNS to see if the Server and IP exists
    write-host "Checking to see if $($DNSRecord.name) exists in DNS"          
    $DNSCheck = $(resolve-DnsName -name "$($DNSRecord.name).$ZoneName" -erroraction 'silentlycontinue' | select-object Name)
    write-host "DNS Lookup Result [blank if not found]: $($DNSCheck.Name)"
    if ($($DNSCheck.Name) -match $($DNSRecord.name)) {         
        write-host "$($DNSRecord.name) $($DNSRecord.ip) exists in DNS, Skipping.." -ForegroundColor "Green" 
        write-output "$($DNSRecord.name) $($DNSRecord.ip)" | out-file $ExistsInDNS -Append
    } else { 
        write-host "$($DNSRecord.name) $($DNSRecord.ip) does not exist in DNS.  Adding $($DNSRecord.name) $($DNSRecord.ip) in DNS" -ForegroundColor "Yellow"
        write-output "$($DNSRecord.name) $($DNSRecord.ip)"  | out-file $RestoredToDNS -Append
        # Add record into DNS   
        #Add-DnsServerResourceRecordA -ComputerName $DNSServer -ZoneName "$ZoneName" -Name $($DNSRecord.name) -AllowUpdateAny -IPv4Address $($DNSRecord.ip)
        Add-DnsServerResourceRecordA -ZoneName "$ZoneName" -Name $($DNSRecord.name) -AllowUpdateAny -IPv4Address $($DNSRecord.ip)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM