DHCP MAC-Filter-Liste mit den Hostnamen der Leases abgleichen
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!"
}
}
} 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.