DHCP MAC-Filter-Liste mit den Hostnamen der Leases abgleichen

DHCP MAC-Filter-Liste mit den Hostnamen der Leases abgleichen

Erläuterung

Hier werden alle aktuellen Addressleases, die unter Filterprofil „Allow“ oder „Zugelassen“ haben,  gelesen und mit den Einträgen in der MAC-Filter-Liste „Allow“ oder „Zugelassen“ verglichen.

Im Detail wird die Lease-MAC (Reservierung aktiv oder inaktiv mit inbegriffen) in der MAC-Filter-Liste gesucht und der aktuelle Hostname der Lease in die Beschreibung des MAC-Eintrags aktualisiert.

Problembeschreibung

Die MAC-Filter-Liste die die MAC-Adressen mit „Allow“ oder „Deny“ (Zulassen oder Verweigern) aktualisiert nie ihre Beschreibung, wenn der Client z.B. sein Hostname ändert.

Download

Parameter

$strDHCPSRV = ‚Servername‘
$strScopeID = ‚10.1.0.0‘

Skript-Voraussetzungen

  • Modul -> DhcpServer

Skript

<#

    Jan Weis
    www.it-explorations.de
    v0.1

    Dieses Skript liest alle aktuellen Leases und vergleicht in der MAC-FILTER-ALLOW Liste den Eintrag der passenden MAC
    und aktualisiert die Beschreibung mit dem aktuellen Hostname aus der Addressleases-Liste, falls nötig.

    Leere Lease-Hostname werden ignoriert

#>


# --- VARIABLEN --- #

$strDHCPSRV = 'server.domäne.local'
$strScopeID = '10.1.0.0'


# --- SKRIPT --- #

$objDHCPLeases = Get-DhcpServerv4Lease -ComputerName $strDHCPSRV -ScopeId $strScopeID | Where-Object {$_.HostName -notlike ''}
$objDHCPFilter = Get-DhcpServerv4Filter -ComputerName $strDHCPSRV

# Zähler
Write-Host "[ Es werden $($objDHCPLeases.Count) Leases mit den MAC-Filter-Einträgen abgeglichen.. Bitte warten.. ]" -ForegroundColor Yellow

Foreach ($objDHCPLeaseItem in $objDHCPLeases)
{
  $objDHCPLeaseItemHostName = $objDHCPLeaseItem.HostName
  $objDHCPLeaseItemMAC = $objDHCPLeaseItem.ClientId
  
  # Prüft ob ein passender Eintrag in der MAC-Filter-Liste gefunden wird
  $objDHCPFilterItem = $objDHCPFilter | Where-Object {$_.MacAddress -eq $objDHCPLeaseItemMAC -and $_.List -match 'Allow'}

  
  if ($objDHCPFilterItem)
  {
    
    # Vergleiche MAC-Filter-Eintragsbeschreibung mit dem Hostname der Lease
    if ($objDHCPFilterItem.Description -notlike $objDHCPLeaseItemHostName) 
    {
        
      # DHCP-Beschreibung stimmt nicht überein! Anpassungen werden durchgeführt!
      Remove-DhcpServerv4Filter -ComputerName $strDHCPSRV -MacAddress $($objDHCPFilterItem.MacAddress)
      Add-DhcpServerv4Filter -ComputerName $strDHCPSRV -list Allow -Description $objDHCPLeaseItemHostName -MacAddress $objDHCPLeaseItemMAC
      
      # Ausgabe
      Write-Information ":: MAC:$($objDHCPFilterItem.MacAddress); Beschreibung von '$($objDHCPFilterItem.Description)' nach '$objDHCPLeaseItemHostName' angepasst!"
    }

  }
  
}