pixel0815
Goto Top

DHCP Reservierungen und DNS Host A Einträge miteinander vergleichen und in einer Zeile ausgeben als CSV

Hallo zusammen,

ich versuche via Powershell die DHCP Reservierungen auszulesen und die DNS Host A Einträge, diese sollen dann verglichen werden ob der Host 1234 im DNS vorhanden ist.
Als Ergebnis sollen die Infos vom DHCP Name,Description,IPAddress,ScopeId,ClientId und Hostname und IP Adresse aus dem DNS in jeweils eine Zeile geschrieben werden.

Momentan hab ich da voll ein Hänger und komm da nicht weiter.

Ach ja, beim DHCP steht natürlich noch eine zeichenkette .test.loc im Namen, das wollte ich mit mit .TrimENd weg machen, aber es hat nicht funktioniert.

# DNS Servername und Domain Suffix
$ServerName = "dc1234"  
$domain = "test.loc"  

# Ermittlung Hosteinträge
$dnshostdaten= Get-DnsServerResourceRecord -ComputerName $servername -zonename $domain |
? {$_.HostName -like 'PR*' -or $_.HostName -like 'MF*' -or $_.HostName -like 'DR*' -or $_.HostName -like 'PRS*' -or $_.HostName -like 'ZBR*'} | select Hostname, @{n='IP';E={$_.recorddata.IPV4Address}},Timestamp,Recordtype | sort timestamp   

$IMPORT_DNS =  $dnshostdaten|  Where-Object -FilterScript {$_.Hostname -cnotlike '*.test.loc'} |select Hostname, IP | convertto-csv -Delimiter ";" -NoTypeInformation   
$IMPORT_DHCP_RESERV= Get-DhcpServerv4Scope -ComputerName $servername| Get-DhcpServerv4Reservation |  select Name,Description,IPAddress,ScopeId,ClientId  | convertto-csv -Delimiter ";" -NoTypeInformation  

$IMPORT_DHCP_RESERV | %{
    $dhcp_name = $_.Name
    $dhcp_descr = $_.Description
    $dhcp_ip = $_.IPAddress
    $dhcp_scope = $_.ScopeID
    $dhcp_mac = $_.ClientID

#Vergleich von Namen aus der DHCP Reservierung und DNS, bei übereinstimmung sollen die Daten zusammengeführt werden und als eine Zeile ausgegeben werden. 
    $device = $dnshostdaten|?{($_.Hostname -eq $dhcp_name)}

    $dns_host=$dnshostdaten.hostname
    $dns_ip =$dnshostdaten.IP

    if($device){
       $device | select *,@{n='Host';e={$dhcp_name}},@{n='IPAddress';e={$dhcp_ip}},@{n='ScopeID';e={$dhcp_scope}},@{n='MAC';e={$dhcp_mac}},@{n='Beschreibung';e={$dhcp_descr}},@{n='DNS-Host';e={$dns_host}},@{n='DNSIP';e={$dns_ip}}  

       
   }else{[pscustomobject]@{NameHost="-NICHT GEFUNDEN - Bitte prüfen-"}}  


} |select Host,DNS-Host,IPAddress,DNSIP,ScopeID,MAC,Beschreibung| ft -AutoSize

Content-Key: 463366

Url: https://administrator.de/contentid/463366

Printed on: April 24, 2024 at 23:04 o'clock

Member: pixel0815
pixel0815 Jun 18, 2019 at 12:22:58 (UTC)
Goto Top
Also ich hab es jetzt so gemacht.
Kann man das noch verbessern ohne CSV Export / Import?

#Vernünftige Zeit für Dateinamen 
$LogTime = Get-Date -Format "MM-dd-yyyy_hh-mm-ss"  

# DNS Export
# Filter nach allen Drucker Devices mit verschiedenen Namen
$dnshostdaten= Get-DnsServerResourceRecord -ComputerName dc111 -zonename test.loc|
? {$_.HostName -like 'PR*' -or $_.HostName -like 'MF*' -or $_.HostName -like 'DR*' -or $_.HostName -like 'PRS*' -or $_.HostName -like 'ZBR*'} | select Hostname, @{n='IP';E={$_.recorddata.IPV4Address}},Timestamp,Recordtype | sort timestamp   

# Export der DNS Daten
$dnshostdaten |select Hostname,IP,Timestamp | export-csv -Path "Z:\DNS-Export.csv" -Delimiter ";" -NoTypeInformation -force  

#Filtert das .Domain Suffix weg
#$dnshostdaten |select Hostname,IP,Timestamp|  Where-Object -FilterScript {$_.Hostname -cnotlike '*.test.loc} | out-gridview 

# DHCP Export in eine CSV nach Bedarf für aktuelle Reports.
# Befehl: 
# Get-DhcpServerv4Scope -ComputerName DC111| Get-DhcpServerv4Reservation | select Name,Description,IPAddress,ScopeId,ClientId | export-csv "W:\DHCP_Reservierungen.csv" -Delim ";" -NoType -Encoding unicode -Force 

$csv_dhcp = Import-CSV "Z:\DHCP_Reservierungen.csv" -Delimiter ";" -Encoding Unicode  
$csv_dns =Import-CSV "Z:\DNS-export.csv" -Delimiter ";"  


$csv_dhcp | %{
    $dhcp_name = $_.Name
    $dhcp_descr = $_.Description
    $dhcp_ip = $_.IPAddress
    $dhcp_scope = $_.ScopeID
    $dhcp_mac = $_.ClientID


    $device = $csv_DNS | ?{($_.Hostname -eq $dhcp_name)}
    $dns_host = $device.Hostname
    $dns_Ip =  $device.IP
    $dns_timestamp = $device.TimeStamp
   if($device){
       $device| select *,@{n='Host';e={$dhcp_name}},@{n='IPAddress';e={$dhcp_ip}},@{n='ScopeID';e={$dhcp_scope}},@{n='MAC';e={$dhcp_mac}},@{n='Beschreibung';e={$dhcp_descr}},@{n='DNS-Host';e={$dns_host}},@{n='DNS-IP';e={$dns_Ip}},@{n='DNS-Timestamp';e={$dns_timestamp}}  

       
   }else{[pscustomobject]@{NameHost="KEIN DRUCKER DEVICE";HostnameFehler="$dhcp_name";IPADRESSE="$dhcp_ip"}}  

   


} |select Host,DNS-Host,IPAddress,DNS-IP,timestamp,ScopeID,MAC,Beschreibung,Namehost,HostnameFehler,IPADRESSE |  export-csv "Z:\DHCP-DNS-DruckerIPCheck-$logtime.csv" -Delimiter ";" -Force -Notype -Encoding Unicode  
Member: pixel0815
pixel0815 Jun 19, 2019 at 06:33:48 (UTC)
Goto Top
Hat noch jemand eine Idee, wie man hier einfach ein Ping Status noch hinzufügen kann? Ich würde gerne wissen welche IP auf einen Ping antwortet und welche nicht.