Powershell DHCP保留删除脚本

Powershell DHCP保留删除脚本,powershell,dhcp,Powershell,Dhcp,在我的办公室(大约7000台电脑),每台电脑都有一个IPv4的安全措施预约 如果更换了计算机,则需要清理保留,但保留可能存在多个作用域 我创建了一个脚本,它在每个作用域中搜索您提供的MAC地址,但在未找到MAC地址的每个作用域中也会生成一个错误 删除IP保留有效,但我希望脚本执行以下操作: 首先,它应该在作用域列表中搜索计算机所在的正确作用域,然后执行它实际删除保留的代码 此外,我尝试在任何范围内都找不到MAC地址时提供文本输出,但这似乎也不起作用 这是我的密码: Write-Host "rem

在我的办公室(大约7000台电脑),每台电脑都有一个IPv4的安全措施预约

如果更换了计算机,则需要清理保留,但保留可能存在多个作用域

我创建了一个脚本,它在每个作用域中搜索您提供的MAC地址,但在未找到MAC地址的每个作用域中也会生成一个错误

删除IP保留有效,但我希望脚本执行以下操作: 首先,它应该在作用域列表中搜索计算机所在的正确作用域,然后执行它实际删除保留的代码

此外,我尝试在任何范围内都找不到MAC地址时提供文本输出,但这似乎也不起作用

这是我的密码:

Write-Host "remove mac-address"
$Mac = Read-Host "Mac-Adres"
$ScopeList = Get-Content sometxtfilewithscopes.txt

foreach($Scope in $Scopelist) 
{
    Remove-DhcpServerv4reservation -ComputerName #ipofdhcpserver# -ClientId $Mac -ScopeId $scope -erroraction SilentlyContinue -PassThru -Confirm -OutVariable NotFound | Out-Null
}
if ($NotFound -eq $false ) {
    Write-Host "MAC-address not found!"
}

pause
尝试类似的方法(这是我用于类似方法的方法):


让PowerShell为您完成所有繁重的工作:

$mac = Read-Host 'Enter MAC address'

$server = 'yourdhcpserver'

$reservation = Get-DhcpServerv4Scope -Computer $server |
               Get-DhcpServerv4Reservation -Computer $server |
               Where-Object { $_.ClientId -eq $mac }

if ($reservation) {
  $reservation | Remove-DhcpServerv4Reservation -Computer $server
} else {
  "$mac not found."
}
上面假设输入的MAC地址的形式为
#-#-#-#-#-#-#-#-#-#-#
。如果您想同时允许冒号(
):::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;
过滤器中的地址之前,需要用连字符替换冒号:

$mac = $mac -replace ':', '-'

谢谢你的回答Fazer87,我试着使用你的代码,不幸的是它不起作用,我试着不为$mac提供任何输入,但它不会返回“未提供mac地址”。此外,try和catch之间的错误处理部分不会产生任何错误,即使我故意输入了无效的mac地址。可能是我的错,但我的代码正常工作了!非常感谢你的帮助,我很好地使用了你的一些代码,它工作起来很有魅力!如果在找不到mac地址时有某种错误响应,那就太好了。出于某种原因,powershell说,当我输入此脚本时,我正在本地pc上运行dhcp搜索,而它清楚地定义了它应该在$server上搜索dhcp作用域。。。“你有什么想法?”毛里塔尼亚船长说,我错了。您需要告诉每个DHCP cmdlet目标计算机。
$mac = $mac -replace ':', '-'