Einleitung

PowerShell und DHCP sind zwei wichtige Komponenten im Netzwerkmanagement, die IT-Administratoren bei der Automatisierung und Verwaltung von DHCP-Servern unterstützen. PowerShell, eine leistungsstarke Skriptsprache und Automatisierungsumgebung, ermöglicht es Administratoren, komplexe Aufgaben einfach zu erledigen und die Effizienz im täglichen Betrieb zu steigern. DHCP (Dynamic Host Configuration Protocol) ist ein essenzielles Protokoll, das IP-Adressen und weitere Konfigurationsinformationen dynamisch an Clients in einem Netzwerk zuweist.

In diesem Artikel werden wir die Grundlagen von DHCP erläutern, auf den Einsatz von PowerShell zur Verwaltung von DHCP-Servern eingehen und die wichtigsten Befehle vorstellen, die seit PowerShell-Version 3.0 verfügbar sind. Wir werden auch auf die Verwaltung von Reservierungen und Leases eingehen, um Ihnen ein umfassendes Verständnis dieser essenziellen Netzwerktechnologien zu vermitteln. Durch das Erlernen dieser Techniken können Sie als IT-Administrator Ihre DHCP-Infrastruktur effektiv verwalten und den Netzwerkbetrieb optimieren.

In diesem Artikel werden wir verschiedene Aspekte von PowerShell und DHCP untersuchen, einschließlich der Verwendung von Cmdlets zur Verwaltung von DHCP-Servern, DHCP-Bereichen, Adresszuweisungen, Reservierungen und Leases. Wir werden auch auf die verschiedenen PowerShell-Versionen eingehen und welche Funktionen in jeder Version verfügbar sind. Dadurch erhalten Sie ein solides Fundament für den erfolgreichen Einsatz von PowerShell in Ihrer DHCP-Verwaltung.

Grundlagen von DHCP

DHCP Explained – Dynamic Host Configuration Protocol

Definition von DHCP (Dynamic Host Configuration Protocol)

DHCP, das Dynamic Host Configuration Protocol, ist ein Netzwerkprotokoll, das in IP-Netzwerken verwendet wird, um Geräten (Clients) automatisch IP-Adressen und andere Netzwerkkonfigurationsinformationen zuzuweisen. DHCP erleichtert die Verwaltung von IP-Adressen und reduziert manuelle Konfigurationsaufwände, indem es die dynamische Zuweisung von IP-Adressen ermöglicht, die bei Bedarf an Clients vergeben und nach einer bestimmten Zeit (Lease-Dauer) zurückgegeben werden.

Funktionsweise von DHCP

DHCP arbeitet in einem Client-Server-Modell, bei dem ein DHCP-Server die IP-Adressen und andere Netzwerkkonfigurationsinformationen an die Clients verteilt. Der Prozess der IP-Adresszuweisung erfolgt in vier Schritten:

  1. DHCP-Discover: Der Client sucht nach einem DHCP-Server im Netzwerk, indem er eine DHCP-Discover-Nachricht sendet. Diese Nachricht wird an die Broadcast-Adresse gesendet, damit alle DHCP-Server im Netzwerk sie empfangen können.
  2. DHCP-Offer: Jeder DHCP-Server, der die Discover-Nachricht empfängt, sendet eine DHCP-Offer-Nachricht an den Client. Diese Nachricht enthält eine angebotene IP-Adresse, die Lease-Dauer und weitere Netzwerkinformationen wie Subnetzmaske, Gateway und DNS-Server.
  3. DHCP-Request: Der Client wählt eines der empfangenen Angebote aus (normalerweise das erste empfangene Angebot) und sendet eine DHCP-Request-Nachricht an den entsprechenden DHCP-Server, um die angebotene IP-Adresse und andere Netzwerkinformationen anzufordern.
  4. DHCP-Acknowledgment (ACK): Der DHCP-Server bestätigt die Zuweisung der IP-Adresse und Netzwerkinformationen an den Client durch Senden einer DHCP-ACK-Nachricht. Der Client ist nun berechtigt, die zugewiesene IP-Adresse für die Dauer der Lease-Zeit zu verwenden.

Sobald die Lease-Dauer abläuft, muss der Client entweder die IP-Adresse erneuern oder eine neue Adresse vom DHCP-Server anfordern.

Rolle des DHCP-Servers

Der DHCP-Server ist für die Verwaltung und Zuweisung von IP-Adressen und Netzwerkkonfigurationsinformationen an die Clients verantwortlich. Der Server verwaltet einen oder mehrere IP-Adressbereiche, die als DHCP-Scopes bezeichnet werden. Jeder DHCP-Scope umfasst eine Reihe von IP-Adressen, Subnetzmasken, Gateways und DNS-Serverinformationen, die an die Clients verteilt werden.

Zusätzlich zur dynamischen IP-Adressvergabe kann der DHCP-Server auch feste IP-Adressen an bestimmte Clients auf Basis ihrer eindeutigen Hardware-Adresse (MAC-Adresse) vergeben. Diese festen Adressen werden als Reservierungen bezeichnet und sind hilfreich, um sicherzustellen, dass bestimmte Geräte, wie Drucker oder Server, immer dieselbe IP-Adresse erhalten.

Der DHCP-Server spielt eine zentrale Rolle im Netzwerkmanagement, indem er die Zuweisung und Verwaltung von IP-Adressen automatisiert. Er trägt dazu bei, IP-Adresskonflikte zu vermeiden, die Netzwerkkonfiguration zu vereinfachen und die Effizienz im IP-Adressmanagement zu erhöhen.

DHCP-Reservierungen und Leases

Reservierungen

Reservierungen sind feste IP-Adressen, die vom DHCP-Server an bestimmte Clients auf Basis ihrer eindeutigen Hardware-Adresse (MAC-Adresse) zugewiesen werden. Sie sind nützlich, um sicherzustellen, dass bestimmte Geräte, wie Server oder Drucker, immer dieselbe IP-Adresse erhalten. Reservierungen können sowohl in der DHCP-Server-Verwaltungsoberfläche (GUI) als auch über PowerShell erstellt, angezeigt und gelöscht werden.

Erstellen einer Reservierung in der GUI:

  • Öffnen Sie die DHCP-Server-Verwaltungskonsole.
  • Navigieren Sie zu “IPv4” > “Scope” > “Reservations”.
  • Klicken Sie mit der rechten Maustaste auf “Reservations” und wählen Sie “New Reservation…”.

Erstellen einer Reservierung in PowerShell:

Add-DhcpServerv4Reservation -ScopeId 192.168.1.0 -IPAddress 192.168.1.50 -ClientId “00-11-22-33-44-55” -Description “Drucker”

Reservierungen anzeigen in PowerShell:

Get-DhcpServerv4Reservation -ScopeId 192.168.1.0

Löschen einer Reservierung in PowerShell:

Remove-DhcpServerv4Reservation -ScopeId 192.168.1.0 -IPAddress 192.168.1.50

Leases

Ein Lease ist eine zeitlich begrenzte IP-Adresszuweisung durch den DHCP-Server an einen Client. Die Lease-Dauer ist die Zeitspanne, während der der Client die zugewiesene IP-Adresse nutzen darf. Nach Ablauf der Lease-Dauer muss der Client entweder die IP-Adresse erneuern oder eine neue Adresse vom DHCP-Server anfordern.

Leases anzeigen in der GUI:

  1. Öffnen Sie die DHCP-Server-Verwaltungskonsole.
  2. Navigieren Sie zu “IPv4” > “Scope” > “Address Leases”.

Leases anzeigen in PowerShell

Get-DhcpServerv4Lease -ScopeId 192.168.1.0

In bestimmten Situationen kann es erforderlich sein, ein Lease manuell zu entfernen oder zu verlängern. Dies kann sowohl über die DHCP-Server-Verwaltungsoberfläche (GUI) als auch über PowerShell erfolgen.

Entfernen eines Leases in der GUI:

  1. Öffnen Sie die DHCP-Server-Verwaltungskonsole.
  2. Navigieren Sie zu “IPv4” > “Scope” > “Address Leases”.
  3. Klicken Sie mit der rechten Maustaste auf das Lease, das Sie entfernen möchten, und wählen Sie “Delete”.

Entfernen eines Leases in PowerShell:

Remove-DhcpServerv4Lease -ScopeId 192.168.1.0 -IPAddress 192.168.1.100

Verlängern eines Leases in der GUI:

  1. Öffnen Sie die DHCP-Server-Verwaltungskonsole.
  2. Navigieren Sie zu “IPv4” > “Scope” > “Address Leases”.
  3. Klicken Sie mit der rechten Maustaste auf das Lease, das Sie verlängern möchten, und wählen Sie “Renew”.

Verlängern eines Leases in PowerShell (indem der Client selbst eine Lease-Erneuerung anfordert):

ipconfig /renew

Durch das Verständnis von DHCP-Reservierungen und Leases sowie deren Verwaltung über PowerShell und die DHCP-Server-Verwaltungsoberfläche können IT-Administratoren die IP-Adresszuweisung effektiv kontrollieren und konfigurieren. Dies gewährleistet einen reibungslosen Netzwerkbetrieb und hilft, IP-Adresskonflikte und Verbindungsprobleme zu vermeiden.

PowerShell und DHCP-Verwaltung

Vorteile der PowerShell-Integration in die DHCP-Verwaltung

Die Integration von PowerShell in die DHCP-Verwaltung bietet IT-Administratoren viele Vorteile, darunter:

  • Automatisierung von wiederkehrenden Aufgaben und Prozessen
  • Schnelle und effiziente Verwaltung von DHCP-Servern und -Einstellungen
  • Skripterstellung zur Verwaltung von mehreren DHCP-Servern gleichzeitig
  • Vereinfachte Fehlerbehebung und Problembehandlung

Verfügbarkeit von DHCP-Cmdlets seit PowerShell-Version X.X

Die DHCP-Cmdlets wurden in PowerShell-Version 3.0 eingeführt und sind seitdem in jeder nachfolgenden Version verfügbar.

PowerShell-Befehle für DHCP

Installation des DHCP-Server-Moduls

Um das DHCP-Server-Modul zu installieren, führen Sie das folgende PowerShell-Skript aus:

Install-WindowsFeature -Name ‘DHCP’ -IncludeManagementTools

Grundlegende DHCP-Serververwaltung

Hinzufügen eines autorisierten DHCP-Servers:

Add-DhcpServerInDC -DnsName “dhcpserver.example.com” -IPAddress “192.168.1.

Entfernen eines autorisierten DHCP-Servers:

Remove-DhcpServerInDC -DnsName “dhcpserver.example.com” -IPAddress “192.168.1.2”

Konfiguration von DHCP-Servereinstellungen

Anzeigen der aktuellen DHCP-Serveroptionen:

Get-DhcpServerv4OptionValue

Festlegen der DNS-Serveroption für einen DHCP-Server:

Set-DhcpServerv4OptionValue -DnsServer 192.168.1.10,192.168.1.11

DHCP-Bereiche und Adresszuweisung

DHCP-Bereiche, auch als DHCP-Scopes bezeichnet, verfolgen den Zweck, einen definierten IP-Adressbereich innerhalb eines Netzwerks bereitzustellen, aus dem der DHCP-Server IP-Adressen dynamisch an die Clients zuweist. Ein DHCP-Bereich umfasst eine Reihe von IP-Adressen sowie zugehörige Netzwerkkonfigurationseinstellungen wie Subnetzmaske, Gateway und DNS-Serverinformationen. [siehe auch Video]

DHCP-Bereiche helfen dabei, die IP-Adressverwaltung im Netzwerk zu organisieren und zu optimieren. Durch die Verwendung von DHCP-Bereichen können Administratoren:

  1. IP-Adresskonflikte vermeiden: Da der DHCP-Server die IP-Adressen dynamisch zuweist und deren Verwendung überwacht, wird sichergestellt, dass keine doppelten IP-Adressen im Netzwerk vergeben werden.
  2. Netzwerkkonfiguration vereinfachen: DHCP-Bereiche ermöglichen es, Netzwerkkonfigurationseinstellungen zentral zu verwalten und automatisch an die Clients zu verteilen. Dies reduziert den manuellen Konfigurationsaufwand und minimiert menschliche Fehler bei der IP-Adresszuweisung.
  3. IP-Adressraum effizient nutzen: DHCP-Bereiche ermöglichen es, den verfügbaren IP-Adressraum besser auszunutzen, indem IP-Adressen dynamisch vergeben und nach Ablauf der Lease-Dauer automatisch freigegeben werden. Dies ermöglicht eine effizientere Nutzung der IP-Adressen, insbesondere in Umgebungen mit vielen temporären Geräten oder häufig wechselnden Geräten.
  4. Skalierbarkeit und Flexibilität: DHCP-Bereiche bieten Skalierbarkeit und Flexibilität, indem sie es ermöglichen, IP-Adressbereiche bei Bedarf zu erweitern, zu reduzieren oder zu ändern, um die Anforderungen eines wachsenden oder sich verändernden Netzwerks zu erfüllen.

Erstellen eines neuen DHCP-Bereichs:

Add-DhcpServerv4Scope -Name “Office” -StartRange 192.168.1.100 -EndRange 192.168.1.200 -SubnetMask 255.255.255.0

Löschen eines DHCP-Bereichs:

Remove-DhcpServerv4Scope -ScopeId 192.168.1.0 -Force

DHCP-Bereiche und reservierte IP-Adressen stehen in direktem Zusammenhang, da sie beide Teil des IP-Adressmanagements in einem DHCP-Server sind. Sie ergänzen sich gegenseitig, um eine effektive Verwaltung der IP-Adresszuweisung im Netzwerk zu gewährleisten. Hier ist eine kurze Beschreibung der Beziehung zwischen den beiden:

  1. DHCP-Bereiche: Wie bereits erwähnt, legen DHCP-Bereiche (Scopes) einen definierten IP-Adressbereich fest, aus dem der DHCP-Server dynamisch IP-Adressen an die Clients zuweist. Die IP-Adressen innerhalb eines Bereichs werden nach Bedarf vergeben und nach Ablauf der Lease-Dauer automatisch freigegeben. Dies ermöglicht eine effiziente Nutzung der IP-Adressen und reduziert den manuellen Verwaltungsaufwand.
  2. Reservierte IP-Adressen: Reservierte IP-Adressen sind spezielle Fälle innerhalb eines DHCP-Bereichs, bei denen eine feste IP-Adresse an einen bestimmten Client auf Basis seiner eindeutigen Hardware-Adresse (MAC-Adresse) zugewiesen wird. Reservierungen werden verwendet, um sicherzustellen, dass bestimmte Geräte, wie Server, Drucker oder Netzwerkgeräte, immer dieselbe IP-Adresse erhalten, unabhängig von der Lease-Dauer.

Das Verhältnis zwischen DHCP-Bereichen und reservierten IP-Adressen besteht darin, dass reservierte IP-Adressen innerhalb des DHCP-Bereichs liegen, aber von der dynamischen IP-Adresszuweisung ausgeschlossen sind. Mit anderen Worten, eine reservierte IP-Adresse wird nicht zufällig an einen anderen Client vergeben, selbst wenn sie innerhalb des DHCP-Bereichs liegt. Diese Kombination ermöglicht es Administratoren, die Vorteile der automatischen IP-Adressverwaltung durch DHCP-Bereiche zu nutzen, während sie gleichzeitig die Möglichkeit haben, feste IP-Adressen für bestimmte Geräte über Reservierungen zuzuweisen.

Zur Umsetzung siehe den Abschnitt “Reservierungen”

ausgewählte Spezialthemen

Wie kann man rausfinden, ob eine IP Adresse vom DHCP bereits vergeben wurde?

$freeIP = "192.168.0.238"
$ScopeID = (Get-DhcpServerv4Scope).ScopeId.IPAddressToString
$LeasedIps = Get-DhcpServerv4Lease -ScopeId $ScopeID
$count = ($LeasedIps | Where-Object IPAddress -eq $freeIP).Count
if ($count -eq 0) {
Write-Host '$freeIP ist frei' -BackgroundColor Green
} else {
Write-Host '$freeIP ist Nicht frei' -BackgroundColor red
}

Der Code besteht aus folgenden Schritten:

  1. Die Variable $freeIP wird auf den Wert “192.168.0.238” gesetzt. Hierbei handelt es sich um die IP-Adresse, die auf Verfügbarkeit geprüft werden soll.
  2. Die Variable $ScopeID wird auf die IP-Adresse des DHCP-Scope gesetzt, der auf dem DHCP-Server vorhanden ist. Hierzu wird die Cmdlet Get-DhcpServerv4Scope verwendet, um alle verfügbaren Scopes zu erhalten, und anschließend die ScopeId von dem Scope abgerufen, der auf dem Server vorhanden ist.
  3. Mit Get-DhcpServerv4Lease wird eine Liste von DHCP-Leases im angegebenen Scope abgerufen. Diese Liste enthält alle IP-Adressen, die derzeit von Clients zugewiesen wurden.
  4. Es wird die Anzahl der Einträge in der Liste von $LeasedIps ermittelt, bei denen die IP-Adresse mit $freeIP übereinstimmt. Dies wird mit Hilfe von Where-Object-Cmdlet und dessen -eq-Parameter durchgeführt.
  5. Falls $count gleich Null ist, wird die Ausgabe “192.168.0.238 ist frei” mit grünem Hintergrund in der Konsole ausgegeben. Andernfalls wird “192.168.0.238 ist nicht frei” mit rotem Hintergrund ausgegeben.

Insgesamt prüft der Code also, ob die IP-Adresse “192.168.0.238” auf dem DHCP-Server bereits vergeben ist. Wenn sie nicht vergeben ist, wird dies in der Konsole ausgegeben.

Erstelle eine Reservierung am DHCP

<#
.SYNOPSIS
Reserviert eine feste IP-Adresse für ein Gerät im DHCP-Scope basierend auf der IP-Adresse des Geräts.
.DESCRIPTION
Das Skript überprüft zuerst, ob es bereits eine Reservierung für die alte und neue IP-Adresse gibt.
Es entfernt die Reservierung der alten IP-Adresse und erstellt eine neue Reservierung mit der neuen IP-Adresse,
wenn diese nicht bereits reserviert ist.
.PARAMETER oldIP
Die alte IP-Adresse, die aus der Reservierung entfernt werden soll. Default-Wert ist "192.168.0.6".
.PARAMETER newIP
Die neue IP-Adresse, die reserviert werden soll. Default-Wert ist "192.168.0.39".
.EXAMPLE
.\CreateReservation.ps1
Führt das Skript mit den Standard-IP-Adressen aus.
.EXAMPLE
.\CreateReservation.ps1 -oldIP "192.168.0.5" -newIP "192.168.0.50"
Führt das Skript mit benutzerdefinierten IP-Adressen aus.
.AUTHOR
Erhard Rainer
.VERSION
1.0.1 - 2021-02-15 - initiale Version
1.0.2 - 2024-03-07 - Parameter hinzugefügt, statt hardcoded
1.0.3 - 2024-03-07 - ScopeID Ermittlung basierend auf der alten IP
#>
param(
# Die alte IP-Adresse mit einem Defaultwert
[string]$oldIP = '192.168.0.8',
# Die neue IP-Adresse mit einem Defaultwert
[string]$newIP = '192.168.0.113'
)
# Aktuelle Leasedaten des PCs basierend auf der alten IP-Adresse abrufen
$currenPC = @(Get-DhcpServerv4Scope | Get-DhcpServerv4Lease | Where-Object IPAddress -Like $oldIP)
Write-Host "Aktuelle PC-Daten:"
Write-Host "OldIP: $($currenPC.IPAddress)"
Write-Host "Client-ID: $($currenPC.ClientId)"
Write-Host "Hostname: $($currenPC.HostName)"
# Ermitteln der aktuellen Domäne
$domainName = (Get-WmiObject Win32_ComputerSystem).Domain
# Ermittlung der ScopeID basierend auf der alten IP
$ScopeID = (Get-DhcpServerv4Lease -IPAddress $oldIP).ScopeId.IPAddressToString
Write-Host "ScopeID basierend auf alter IP ermittelt: $ScopeID"
# Überprüfen, ob eine Reservierung für die alte IP existiert
$c = @(Get-DhcpServerv4Reservation -ScopeId $ScopeID | Where-Object {$_.IPAddress -eq $oldIP}).Count
if ($c -eq 1) {
# Vorhandene Reservierung der alten IP entfernen
Remove-DhcpServerv4Reservation -IPAddress $oldIP -ScopeId $ScopeID
Write-Host "Alte IP-Reservierung entfernt."
}
# Überprüfen, ob eine Reservierung für die neue IP existiert
$c = @(Get-DhcpServerv4Reservation -ScopeId $ScopeID | Where-Object {$_.IPAddress -eq $newIP}).Count
if ($c -ne 1) {
# Neue IP-Reservierung hinzufügen
Add-DhcpServerv4Reservation -ComputerName $domainName -ScopeId $ScopeID -IPAddress $newIP -ClientId ($currenPC.ClientId) -Description ($currenPC.HostName)
Write-Host "Neue IP-Reservierung hinzugefügt."
} else {
# Warnung ausgeben, wenn die neue IP bereits reserviert ist
Write-Host "$newIP already reserved" -ForegroundColor Red
}

Dieser Code ändert die IP-Adresse eines DHCP-Clients von $oldIP zu $newIP, indem er eine DHCP-Reservierung für die neue IP-Adresse erstellt und die alte Reservierung löscht, falls sie vorhanden ist. Der Code besteht aus folgenden Schritten:

  1. Die Variable $oldIP wird auf den Wert “192.168.0.18” gesetzt und $newIP wird auf “192.168.0.26” gesetzt. Hierbei handelt es sich um die alte und neue IP-Adresse des Clients.
  2. Mit Get-DhcpServerv4Scope, Get-DhcpServerv4Lease und Where-Object-Cmdlet wird die aktuelle IP-Adresse des Clients ermittelt. Die Ergebnisse werden in der Variable $currenPC gespeichert.
  3. Es wird die IP-Adresse des aktuellen Clients $currenPC sowie dessen ClientId und HostName ausgegeben, um sicherzustellen, dass die richtige IP-Adresse ermittelt wurde.
  4. Es wird ermittelt, ob es bei der alten IP bereits eine Reservierung gab. Hierzu wird mit Get-DhcpServerv4Reservation und Where-Object-Cmdlet überprüft, ob eine Reservation für die alte IP-Adresse vorhanden ist. Die Anzahl der Ergebnisse wird in der Variablen $c gespeichert.
  5. Falls $c gleich 1 ist, wird die vorhandene Reservierung für die alte IP-Adresse mit Remove-DhcpServerv4Reservation entfernt.
  6. Es wird ermittelt, ob es bei der neuen IP-Adresse bereits eine Reservierung gab, indem die Anzahl der Ergebnisse von Get-DhcpServerv4Reservation mit $newIP als IP-Adresse überprüft wird. Die Anzahl der Ergebnisse wird in der Variablen $c gespeichert.
  7. Falls $c ungleich 1 ist, wird eine DHCP-Reservierung für die neue IP-Adresse erstellt. Hierzu wird Add-DhcpServerv4Reservation verwendet, wobei der Computername, die IP-Adresse, die ClientId und die Hostname des aktuellen Clients ($currenPC) angegeben werden. Der ScopeId wird aus der Ausgabe von Get-DhcpServerv4Scope abgeleitet.
  8. Andernfalls wird ausgegeben, dass die neue IP-Adresse bereits reserviert ist.

Man könnte natürlich aus hergehen und anhand der MAC-Adresse die IP vergeben. Ich persönlich finde es aber nicht so optimal, da man die MAC-Adresse schwerer herausfindet als die aktuelle IP-Adresse eine Rechners. Hier aber ein Beispiel, wie es anhand der MAC gehen würde:

<#
.SYNOPSIS
Reserviert eine feste IP-Adresse für ein Gerät im DHCP-Scope basierend auf der MAC-Adresse des Geräts.
.DESCRIPTION
Das Skript überprüft, ob die angegebene IP-Adresse oder die MAC-Adresse bereits reserviert ist.
Falls die IP-Adresse bereits reserviert ist, wird eine Warnmeldung ausgegeben und das Skript beendet.
Falls die MAC-Adresse bereits reserviert ist, wird ebenfalls eine Warnung ausgegeben und das Skript beendet.
Wenn weder die IP- noch die MAC-Adresse reserviert sind, wird eine neue Reservierung mit der angegebenen IP- und MAC-Adresse erstellt.
.PARAMETER DHCPServerName
Der Name oder die IP-Adresse des DHCP-Servers. Standardwert ist "AD.tanzmeister.lan".
.PARAMETER ScopeID
Die Scope-ID, in der die Reservierung erstellt werden soll. Standardwert ist "192.168.0.0".
.PARAMETER ReservedIP
Die feste IP-Adresse, die reserviert werden soll. Standardwert ist "192.168.0.162".
.PARAMETER MACAddress
Die MAC-Adresse des Geräts, für die die Reservierung erstellt wird. Standardwert ist "BC-E9-2F-96-C1-75". ":" in der MAC-Adresse werden automatisch durch "-" ersetzt.
.PARAMETER Description
Eine Beschreibung für die Reservierung. Standardwert ist "Gira".
.AUTHOR
Name des Autors
.VERSION
1.0.3 - 2024-03-07 - Optionale Parameter mit Standardwerten
1.0.2 - 2024-03-07 - Parameter für die Eingabe hinzugefügt
1.0.1 - 2024-03-07 - Ersetzung von ":" durch "-" in MAC-Adressen hinzugefügt
1.0.0 - 2021-01-08 - Erstveröffentlichung
.EXAMPLE
.\CreateReservationMAC.ps1
.EXAMPLE
.\CreateReservationMAC.ps1 -DHCPServerName "AD.tanzmeister.lan" -ScopeID "192.168.0.0" -ReservedIP "192.168.0.162" -MACAddress "BC:E9:2F:96:C1:75" -Description "Gira"
#>
param (
[string]$DHCPServerName = "AD.tanzmeister.lan",
[string]$ScopeID = "192.168.0.0",
[string]$ReservedIP = "192.168.0.162",
[string]$MACAddress = "BC-E9-2F-96-C1-75",
[string]$Description = "Gira"
)
# Ersetzen von ":" durch "-" in der MAC-Adresse
$MACAddress = $MACAddress -replace ":", "-"
# Prüfen, ob die IP-Adresse bereits reserviert ist
$existingIPReservation = Get-DhcpServerv4Reservation -ComputerName $DHCPServerName -ScopeId $ScopeID | Where-Object {$_.IPAddress -eq $ReservedIP}
if ($existingIPReservation) {
Write-Host "Die IP-Adresse $ReservedIP ist bereits reserviert." -ForegroundColor Red
return
}
# Ersetzen von ":" durch "-" in der MAC-Adresse
$MACAddress = $MACAddress -replace ":", "-"
# Prüfen, ob die IP-Adresse bereits reserviert ist
$existingIPReservation = Get-DhcpServerv4Reservation -ComputerName $DHCPServerName -ScopeId $ScopeID | Where-Object {$_.IPAddress -eq $ReservedIP}
if ($existingIPReservation) {
Write-Host "Die IP-Adresse $ReservedIP ist bereits reserviert." -ForegroundColor Red
return
}
# Prüfen, ob die MAC-Adresse bereits reserviert ist
$existingMACReservation = Get-DhcpServerv4Reservation -ComputerName $DHCPServerName -ScopeId $ScopeID | Where-Object {$_.ClientId -eq $MACAddress}
if ($existingMACReservation) {
$assignedIP = $existingMACReservation.IPAddress
Write-Host "Die MAC-Adresse $MACAddress ist bereits der IP-Adresse $assignedIP zugewiesen." -ForegroundColor Red
return
}
# Feste IP-Reservierung hinzufügen
try {
Add-DhcpServerv4Reservation -ComputerName $DHCPServerName -ScopeId $ScopeID -IPAddress $ReservedIP -ClientId $MACAddress -Description $Description
Write-Host "Reservierung erfolgreich hinzugefügt für IP $ReservedIP mit MAC-Adresse $MACAddress." -ForegroundColor Green
} catch {
Write-Host "Fehler beim Hinzufügen der Reservierung: $_" -ForegroundColor Red
}

Dieses Skript erstellt eine DHCP-Reservierung für eine bestimmte MAC-Adresse, indem es Get-DhcpServerv4Reservation verwendet, um zu überprüfen, ob die MAC-Adresse bereits reserviert ist. Wenn die MAC-Adresse noch nicht reserviert ist, wird Add-DhcpServerv4Reservation verwendet, um eine neue Reservierung zu erstellen.

Im Skript müssen die Werte der Variablen $macAddress, $dhcpServer, $scopeId und $reservedIP an die Umgebung angepasst werden, in der es ausgeführt wird.

Netzwerk-Inventar

as PowerShell-Skript führt eine Netzwerkdiagnose durch, indem es die vergebenen IP-Adressen in einem DHCP-Scope ermittelt, eine Ping-Überprüfung für jede IP-Adresse in einem bestimmten Subnetz durchführt und Informationen zu reservierten sowie aktuell genutzten (geleasten) IP-Adressen sammelt. Die Ergebnisse werden in einer Tabelle angezeigt, die IP-Adresse, Hostname, Beschreibung, MAC-Adresse, Reservierungsstatus, Betriebsstatus und Leasingstatus enthält.

<#
.SYNOPSIS
Netzwerkdiagnose-Tool zur Ermittlung und Überprüfung von IP-Adressen in einem DHCP-Scope.
.DESCRIPTION
Dieses Skript führt eine umfassende Analyse der vom DHCP-Server verwalteten IP-Adressen durch. Es ermittelt reservierte und aktuell vergebene (geleaste) IP-Adressen, führt einen Ping-Test für jede IP-Adresse im Subnetz durch und sammelt Informationen wie Hostname, Beschreibung und MAC-Adresse. Die Ergebnisse werden in einer übersichtlichen Tabelle dargestellt.
.NOTES
Version: 1.0
Autor: Erhard Rainer
Erstellungsdatum: 06.02.2024
#>
# Vorbereitende Variablen
$ComputerName = 'xxxx' # Name des DHCP-Servers
$ScopeID = (Get-DhcpServerv4Scope).ScopeId.IPAddressToString # Scope-ID des DHCP-Servers abrufen
$reservedComputer = Get-DhcpServerv4Reservation -ComputerName $ComputerName -ScopeId $ScopeID # Reservierte IP-Adressen im Scope ermitteln
$LeasedIps = Get-DhcpServerv4Lease -ScopeId $ScopeID # Aktuell vergebene (geleaste) IP-Adressen im Scope ermitteln
# Ermittle die Basis-IP aus den vergebenen IP-Adressen
$baseIpParts = $LeasedIps.IPAddress | ForEach-Object { $_.ToString().Split('.')[0..2] -join '.' } | Select-Object -Unique # Basis-IP-Teile aus den geleasten IPs ermitteln
# Konvertiere das Ergebnis in ein Array, falls es nicht bereits eines ist
$baseIpParts = @($baseIpParts)
Write-Host "Gefundene Basis-IP-Teile: $baseIpParts"
# Sicherstellen, dass nur eine Basis-IP verwendet wird (im Fall eines einheitlichen Subnetzes)
if ($baseIpParts.Count -eq 1) {
$baseIp = $baseIpParts[0]
} else {
Write-Host "Mehrere Subnetze gefunden. Bitte präzisiere die Aufgabe."
return
}
Write-Host "Verwendete Basis-IP: $baseIp"
# Liste für die Ergebnisse
$results = @()
# Durchlaufe jede IP in der Range
foreach ($i in 1..254) {
$currentIp = "$baseIp.$i" # Generiere die aktuelle IP-Adresse
# Führe Ping-Test durch
$ping = Test-Connection -ComputerName $currentIp -Count 1 -Quiet -ErrorAction SilentlyContinue # Ping-Test für die aktuelle IP
# Suche nach der aktuellen IP in den reservierten und vergebenen Adressen
$reservedEntry = $reservedComputer | Where-Object { $_.IPAddress -eq $currentIp }
$leasedEntry = $LeasedIps | Where-Object { $_.IPAddress -eq $currentIp }
# Ermittle den Hostnamen, die Beschreibung und die MAC-Adresse
if ($reservedEntry) {
$hostname = $reservedEntry.Name
$description = $reservedEntry.Description
$macAddress = $reservedEntry.ClientId
} elseif ($leasedEntry) {
$hostname = $leasedEntry.HostName
$description = $leasedEntry.Description
$macAddress = $leasedEntry.ClientId
}
# Erstelle das Custom Object mit den gesammelten Informationen
$obj = [PSCustomObject]@{
IPAddress = $currentIp
Hostname = $hostname
Description = $description
MACAddress = $macAddress
reserved = $null -ne $reservedEntry
running = $ping
leased = $null -ne $leasedEntry
}
# Füge das Objekt zur Liste hinzu
$results += $obj
}
# Gib die Ergebnisse aus
$results | Format-Table # Ergebnistabelle anzeigen

Static IP vs. DHCP Reservation

Static IP vs DHCP Reservation

Static IPs und DHCP-Reservierungen sind zwei Methoden, um Geräten in einem Netzwerk feste IP-Adressen zuzuweisen. Obwohl sie das gleiche Ziel verfolgen, unterscheiden sie sich in ihrer Implementierung und Verwaltung.

Static IPs:

  • Eine statische IP-Adresse wird manuell auf dem Gerät selbst konfiguriert, indem die Netzwerkeinstellungen geändert werden.
  • Es besteht die Gefahr von IP-Adresskonflikten, wenn die gleiche statische IP-Adresse versehentlich auf mehreren Geräten eingestellt wird.
  • Die Verwaltung statischer IPs kann zeitaufwendig sein, insbesondere in großen Netzwerken, da jede Änderung an der IP-Adresse oder den Netzwerkeinstellungen auf dem Gerät selbst vorgenommen werden muss.

DHCP-Reservierungen:

  • Eine DHCP-Reservierung wird auf dem DHCP-Server konfiguriert, der die feste IP-Adresse auf Basis der MAC-Adresse des Geräts automatisch zuweist.
  • IP-Adresskonflikte sind unwahrscheinlich, da der DHCP-Server die Reservierung verwaltet und sicherstellt, dass die reservierte IP-Adresse nicht an andere Clients vergeben wird.
  • Die Verwaltung von DHCP-Reservierungen ist einfacher und zentralisiert, da Änderungen auf dem DHCP-Server vorgenommen werden und nicht auf jedem einzelnen Gerät.

Vorteile von Static IPs:

  • Funktioniert unabhängig von einem DHCP-Server, was in kleinen Netzwerken ohne DHCP-Server von Vorteil sein kann.
  • Die IP-Adresse bleibt konstant, selbst wenn der DHCP-Server ausfällt.

Vorteile von DHCP-Reservierungen:

  • Zentrale Verwaltung der festen IP-Adressen, was in größeren Netzwerken effizienter ist.
  • Reduziert das Risiko von IP-Adresskonflikten, da der DHCP-Server die IP-Adressvergabe überwacht.
  • Einfacheres Hinzufügen, Entfernen oder Ändern von festen IP-Adressen, da dies auf dem DHCP-Server erfolgt.

Wann soll was verwendet werden?

  • Verwenden Sie Static IPs, wenn Sie in einem kleinen Netzwerk ohne DHCP-Server arbeiten oder wenn Sie sicherstellen müssen, dass ein Gerät unabhängig vom DHCP-Server immer dieselbe IP-Adresse hat.
  • Verwenden Sie DHCP-Reservierungen in größeren Netzwerken mit einem DHCP-Server, um die Verwaltung der festen IP-Adressen zu vereinfachen und IP-Adresskonflikte zu reduzieren. Dies ist besonders hilfreich für Geräte wie Server, Drucker und Netzwerkkomponenten, die eine feste IP-Adresse benötigen, aber dennoch zentral verwaltet werden sollen.