Statische DNS Einträge prüfen ob Client antwortet

Mit diesem kleinen Skript kann man prüfen, ob die DNS Records (PTR und A) die statisch eingetragen sind, noch erreichbar sind. Daraus kann man sich ableiten, ob die nicht erreichbaren Einträge „irgendwann“ mal gelöscht werden können.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
$DNSRecords = Get-DnsServerZone  | Get-DnsServerResourceRecord
 
foreach($DNSRecord in $DNSRecords) {
	$Line = ""
 
	if($($DNSRecord.TimeStamp -eq $null)) {
	    # nur statische Einträge prüfen, die anderen Fallen ja von selbst raus.
		switch ($($DNSRecord.RecordType)) {
			"A" {
				$DN = $($DNSRecord.RecordData.DnsServerResourceRecordA)
				$Line = $DN
				$Result = ""
				if (-not (Test-Connection -ComputerName $DN -Count 1 -Quiet)){
					$Result = "und ist nicht erreichbar"
					$BGColor = "yellow"
					write-host "failed " -nonewline -foregroundcolor red
					$Line = "failed "
					$Line += "A   $($DNSRecord.Hostname) hat die IP $($DNSRecord.RecordData.DnsServerResourceRecordA)"
					$Line | Out-File -Append -FilePath c:\IPPingResult.txt
				}else {
					$Result = "und ist erreichbar"
					$BGColor = "white"
					write-host "Ok " -nonewline -foregroundcolor green
					$line = "OK "
				}
 
				write-host "A   $($DNSRecord.Hostname) hat die IP $($DNSRecord.RecordData.DnsServerResourceRecordA)" -Foregroundcolor $BGColor
 
				}
 
			"PTR" {
				$DN = $($DNSRecord.DistinguishedName)
				$Pos = $DN.IndexOf(".in-addr.arpa")
 
				$DN = $DN.Substring(0,$Pos)
				$DN = $DN.Replace(",DC=",".")
				$DN = $DN.Replace("DC=","")
				# IP Umdrehen 
				$Help = $DN.Split(".")
				[array]::Reverse($Help)
				$DN   = $Help -join "."
				$Line = $DN
				$Result = ""
				if (-not (Test-Connection -ComputerName $DN -Count 1 -Quiet)){
					$Result = "und ist nicht erreichbar"
					$BGColor = "yellow"
					write-host "failed " -nonewline -foregroundcolor red
					$Line = "failed "
					$Line += "PTR $($DNSRecord.RecordData.PtrDomainName) hat die IP $DN $Result"
					$Line | Out-File -Append -FilePath c:\IPPingResult.txt
				}else {
					$Result = "und ist erreichbar"
					$BGColor = "white"
					write-host "Ok " -nonewline -foregroundcolor green
					$Line = "OK "
				}
 
				write-host "PTR $($DNSRecord.RecordData.PtrDomainName) hat die IP $DN $Result" -Foregroundcolor $BGColor
 
				}
 
		}
	}
 
}

So soll das Ergebnis aussehen (und gleichzeitig stehen in der C:\IPPingResult.txt die Clients, die nicht erreichbar sind).
DNSCheck