如何实现批量添加和删除DHCP保留
今天一大早就接到了将60个IP进行绑定的需求,之前是到DHCP服务器中一个一个去添加,突发奇想做一个批量添加;在网络管理中,DHCP(动态主机配置协议)服务器用于自动分配IP地址给网络中的设备。有时,我们需要为特定设备保留固定的IP地址,这就是所谓的DHCP保留。本文将介绍如何使用PowerShell脚本批量添加和删除DHCP保留。
环境准备
在开始之前,请确保你有以下环境准备:
Windows操作系统
安装了DHCP服务器角色
安装了PowerShell
批量添加DHCP保留
首先,我们需要一个包含IP地址、MAC地址和保留名称的文本文件。文件内容如下(防泄密需要,MAC地址已做脱敏处理,随机生成的):
192.168.45.123 1A-2B-3C-4D-5E-6F computer-A区-1 192.168.67.89 2B-3C-4D-5E-6F-7A computer-A区-2 192.168.23.45 3C-4D-5E-6F-7A-8B computer-A区-3 192.168.56.78 4D-5E-6F-7A-8B-9C computer-A区-4 192.168.12.34 5E-6F-7A-8B-9C-AD computer-A区-5 192.168.98.76 6F-7A-8B-9C-AD-BE computer-A区-6 192.168.54.32 7A-8B-9C-AD-BE-CF computer-A区-7 192.168.21.43 8B-9C-AD-BE-CF-D0 computer-A区-8 192.168.65.87 9C-AD-BE-CF-D0-E1 computer-A区-9 192.168.34.56 AD-BE-CF-D0-E1-F2 computer-A区-10 192.168.78.90 BE-CF-D0-E1-F2-03 computer-A区-11 192.168.11.22 CF-D0-E1-F2-03-14 computer-A区-12 192.168.33.44 D0-E1-F2-03-14-25 computer-A区-13 192.168.55.66 E1-F2-03-14-25-36 computer-A区-14 192.168.77.88 F2-03-14-25-36-47 computer-A区-15 192.168.99.11 03-14-25-36-47-58 computer-A区-16 192.168.22.33 14-25-36-47-58-69 computer-A区-17 192.168.44.55 25-36-47-58-69-7A computer-A区-18 192.168.66.77 36-47-58-69-7A-8B computer-A区-19 192.168.88.99 47-58-69-7A-8B-9C computer-A区-20 192.168.10.20 58-69-7A-8B-9C-AD computer-A区-21 192.168.30.40 69-7A-8B-9C-AD-BE computer-A区-22 192.168.50.60 7A-8B-9C-AD-BE-CF computer-A区-23 192.168.70.80 8B-9C-AD-BE-CF-D0 computer-A区-24 192.168.90.10 9C-AD-BE-CF-D0-E1 computer-A区-25 192.168.12.34 AD-BE-CF-D0-E1-F2 computer-A区-26 192.168.34.56 BE-CF-D0-E1-F2-03 computer-A区-27 192.168.56.78 CF-D0-E1-F2-03-14 computer-A区-28 192.168.78.90 D0-E1-F2-03-14-25 computer-A区-29 192.168.90.12 E1-F2-03-14-25-36 computer-A区-30
在以上这个TXT中,分别为所需要绑定的IP,MAC,和名称,可以先在excel中编辑好格式,然后复制到txt中,别问我为什么不直接用Excel,因为公司DHCP服务器上没装Excel,只能通过堡垒机进行远程。
接下来,我编写了一个PowerShell脚本来批量添加这些保留。
# 定义文本文件路径
$txtFilePath = "C:\Users\panchenbin\Desktop\bit008.txt"
# 读取文本文件中的数据
$reservations = Import-Csv -Path $txtFilePath -Delimiter "`t" -Header IPAddress,MACAddress,Description
# 定义 DHCP 服务器和作用域
$dhcpServer = "xxx.xxx.com"
$scopeId = "192.168.xx.xx"
# 批量添加保留 IP 地址
foreach ($reservation in $reservations) {
try {
# 添加保留 IP 地址并设置保留名称
Add-DhcpServerv4Reservation -ComputerName $dhcpServer -ScopeId $scopeId -IPAddress $reservation.IPAddress -ClientId $reservation.MACAddress -Name $reservation.Description
Write-Host "成功为 IP 添加保留: $($reservation.IPAddress) 保留名称: $($reservation.Description)"
} catch {
Write-Host "无法为 IP 添加保留: $($reservation.IPAddress). Error: $_" -ForegroundColor Red
}
}这个脚本的主要功能是批量添加DHCP保留IP地址,并为每个保留IP地址设置保留名称。以下是脚本的详细工作原理:
定义文本文件路径:
$txtFilePath = "C:\Users\panchenbin\Desktop\bit008.txt"
这行代码定义了一个变量 $txtFilePath,用于存储包含保留IP地址、MAC地址和保留名称的文本文件的路径。
读取文本文件中的数据:
$reservations = Import-Csv -Path $txtFilePath -Delimiter "`t" -Header IPAddress,MACAddress,Description
这行代码使用 Import-Csv cmdlet 读取文本文件中的数据,并将其存储在 $reservations 变量中。文件中的数据使用制表符(\t)分隔,并且每一列分别对应IP地址、MAC地址和保留名称。
定义 DHCP 服务器和作用域:
$dhcpServer = "xxx.xxx.com" $scopeId = "10.215.212.0"
这两行定义了DHCP服务器的名称和作用域ID。
批量添加保留 IP 地址:
foreach ($reservation in $reservations) {
try {
# 添加保留 IP 地址并设置保留名称
Add-DhcpServerv4Reservation -ComputerName $dhcpServer -ScopeId $scopeId -IPAddress $reservation.IPAddress -ClientId $reservation.MACAddress -Name $reservation.Description
Write-Host "成功为 IP 添加保留: $($reservation.IPAddress) 保留名称: $($reservation.Description)"
} catch {
Write-Host "无法为 IP 添加保留: $($reservation.IPAddress). Error: $_" -ForegroundColor Red
}
}这段代码使用 foreach 循环遍历 $reservations 中的每一条记录,并尝试添加保留IP地址。具体步骤如下:
使用 Add-DhcpServerv4Reservation cmdlet 添加保留IP地址,并设置对应的MAC地址和保留名称。
如果添加成功,使用 Write-Host 输出成功信息。
如果添加失败,捕获异常并输出错误信息。
通过这个脚本,可以批量添加DHCP保留IP地址,并为每个保留IP地址设置保留名称,从而简化了手动添加的过程,提高了工作效率
批量删除DHCP保留
另外,有时我们需要删除已经存在的DHCP保留。我们可以使用以下PowerShell脚本来实现批量删除
# 定义文本文件路径
$txtFilePath = "C:\Users\panchenbin\Desktop\bit008.txt"
# 读取文本文件中的数据
$reservations = Import-Csv -Path $txtFilePath -Delimiter "`t" -Header IPAddress,MACAddress,Description
# 定义 DHCP 服务器和作用域
$dhcpServer = "xxxx.xxxx.com"
$scopeId = "10.215.212.0"
# 获取所有保留的详细信息
$allReservations = Get-DhcpServerv4Reservation -ComputerName $dhcpServer -ScopeId $scopeId
# 批量删除保留 IP 地址
foreach ($reservation in $reservations) {
try {
# 查找匹配的保留
$matchingReservation = $allReservations | Where-Object { $_.IPAddress -eq [IPAddress]$reservation.IPAddress }
if ($matchingReservation) {
# 删除匹配的保留
Remove-DhcpServerv4Reservation -ComputerName $dhcpServer -ScopeId $scopeId -ClientId $matchingReservation.ClientId -Confirm:$false
Write-Host "成功删除 IP 保留: $($reservation.IPAddress)"
} else {
Write-Host "未找到 IP 保留: $($reservation.IPAddress)" -ForegroundColor Yellow
}
} catch {
Write-Host "无法删除 IP 保留: $($reservation.IPAddress). Error: $_" -ForegroundColor Red
}
}运行脚本
打开PowerShell ISE或PowerShell控制台。
将上述脚本复制并粘贴到PowerShell ISE或PowerShell控制台中。
根据你的实际情况修改
$txtFilePath、$dhcpServer和$scopeId的值。以管理员权限运行脚本。
总结以及最终实现效果

通过上述步骤,你可以轻松地批量添加和删除DHCP保留。这对于网络管理员来说是一个非常实用的工具,可以大大提高工作效率。如果你在执行过程中遇到任何问题,请确保你的DHCP服务器和作用域ID是正确的,并且你有足够的权限执行这些操作