DHCP Migration
Wenn man einen DHCP Server im Active Directory umziehen will, gibt es wenig automatische Möglichkeiten.
Die einfachste Variante ist den DHCP Server zu exportieren und auf dem neuen Server wieder zu importieren. Dazu kann man das folgende Script verwenden.
Das Script erledigt diese Schritte:
- es fragt nach dem Namen des
- Quellservers
- Zielservers
- auf dem Quellserver
- exportiert es die DHCP Daten
- entfernt es den DHCP Server im Active Directory
- auf dem Zielserver
- installiert es die notwendigen Rollen
- importiert es die DHCP Daten
- authorisiert es den DHCP Server im Active Directory
Ablaufplan
graph LR;
A(Export auf altem Server) --> C[XML Datei]
A --> B(Entfernen des alten Servers)
C --> D(Installation der Dienste auf dem neuem Server)
D --> E(Import auf neuem Server)
E --> F(Registrieren des neuen Servers)
Script
# Export Pfad und Datei
$path="C:\DHCP-BACKUP"
$file="$path\dhcpexp.xml"
if (!(Test-Path $path -PathType Container))
{
Write-Host Lege den Ordner für den DHCP Export an: $path
New-Item -Path $path -ItemType Container
}
# Servernamen abfragen
$src=Read-Host -Prompt "DHCP Server der exportiert werden soll"
$dst=Read-Host -Prompt "DHCP Server in den importiert werden soll"
# Domain hinzufügen wenn notwendig
if ($src -notcontains ".") { $src = "$src.$($env:USERDNSDOMAIN)" }
if ($dst -notcontains ".") { $dst = "$dst.$($env:USERDNSDOMAIN)" }
function is_dhcp_server {
param (
[Parameter(Mandatory)]
[ValidateNotNull()][string]$Server,
[Parameter(Mandatory)]
[ValidateNotNull()][array]$DhcpServers
)
# Ist der Server ein DHCP Server?
if ($DhcpServers -contains $Server) {
return $true
} else {
Write-Host -ForegroundColor Red Der Server $Server ist kein DHCP Server
return $false
}
# Ist der Server erreichbar?
if (!(Test-Connection -Quiet -Count 1 -TimeToLive 1 $Server)) {
Write-Host -ForegroundColor Red Der Server $Server ist nicht erreichbar
return $false
}
}
# Installieren wenn notwendig
if (!(is_dhcp_server -Server $dst -DhcpServers $dhcpsrv)) {
Install-WindowsFeature -Name 'DHCP' –IncludeManagementTools
}
$dhcpsrv = Get-DhcpServerInDC | Select-Object -ExpandProperty DnsName
if (is_dhcp_server -Server $src -DhcpServers $dhcpsrv) {
# exportieren und importieren
Write-Host Exportiere den DHCP Server $src aus $file
Export-DhcpServer -ComputerName $src -Leases -File $file –Verbose
Write-Host Importiere den DHCP Server $dst aus $file
Import-DhcpServer –ComputerName $dst -Leases –File $file -BackupPath $path -Force –Verbose
Write-Host Stoppe und deaktiviere den alten DHCP Server $src
Invoke-Command -ComputerName $src -ScriptBlock { Stop-Service -Name "DHCPServer"; Disable-Service -Name "DHCPServer" }
Write-Host Entferne DHCP Server $src Authorisierung
Remove-DhcpServerInDC $src
Write-Host Setze DHCP Server $dst Authorisierung
Add-DhcpServerInDC $dst
# DHCP Server Neustarten
Write-Host Starte den DHCP Server auf dem Zielserver $dst neu
Restart-Service -Name "DHCPServer"
}