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

· 2 min Lesezeit · von

Inhalt

Kurz & knapp: Das PowerShell-Skript gleicht die DHCP-MAC-Filterliste („Allow”) mit den aktuellen Adressleases ab und schreibt den aktuellen Hostnamen jeder Lease in die Beschreibung des passenden MAC-Filter-Eintrags. So bleibt die Filterliste lesbar, auch wenn Clients ihren Hostnamen ändern. Voraussetzung: PowerShell-Modul DhcpServer.

Erläuterung

Hier werden alle aktuellen Adressleases, 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

➜ Download: RefeshAllowFilterDescription.ps1

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-Host ":: MAC:$($objDHCPFilterItem.MacAddress); Beschreibung von '$($objDHCPFilterItem.Description)' nach '$objDHCPLeaseItemHostName' angepasst!"
    }

  }
  
}

Kategorien: DHCPSkripte

Tags: MAC-Filterung

Kommentare

Kommentare werden von giscus / GitHub geladen. Dabei wird deine IP-Adresse an GitHub (USA) übertragen. Näheres in der Datenschutzerklärung.