当前位置:首页 > 网络运维技术

如何实现批量添加和删除DHCP保留

潘臣彬2年前 (2024-09-11)网络运维技术172

今天一大早就接到了将60个IP进行绑定的需求,之前是到DHCP服务器中一个一个去添加,突发奇想做一个批量添加;在网络管理中,DHCP(动态主机配置协议)服务器用于自动分配IP地址给网络中的设备。有时,我们需要为特定设备保留固定的IP地址,这就是所谓的DHCP保留。本文将介绍如何使用PowerShell脚本批量添加和删除DHCP保留。

环境准备

在开始之前,请确保你有以下环境准备:

  1. Windows操作系统

  2. 安装了DHCP服务器角色

  3. 安装了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
    }
}

运行脚本

  1. 打开PowerShell ISE或PowerShell控制台。

  2. 将上述脚本复制并粘贴到PowerShell ISE或PowerShell控制台中。

  3. 根据你的实际情况修改 $txtFilePath$dhcpServer 和 $scopeId 的值。

  4. 以管理员权限运行脚本。


总结以及最终实现效果

图片.png

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


扫描二维码推送至手机访问。

版权声明:本文由潘臣彬的Blog发布,如需转载请注明出处。

本文链接:https://blog.20i0.cn/blog_list_5.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。