【发布时间】:2023-04-09 03:13:01
【问题描述】:
我正在 Windows Server 2012 R2 中运行具有活动范围的 DHCP 服务器,并且我制作了一个脚本,该脚本要求用户提供 MAC 地址,然后将范围内的可用 IP 保留给用户的 MAC。
实际预订工作没有问题,但我引入了 IF ELSE 语句,希望条件表达式在预订成功时被评估为 TRUE,否则为 FALSE。
但该表达式的计算结果始终为 FALSE,因为将 cmdlet Get-DhcpServerv4Reservation 的执行存储到一个变量中然后打印它会产生一个非常混乱的输出:基本上它会将“DHCPServerv4Reservation”打印为多次作为范围中存在的保留,而不是直接执行 cmdlet 时给出的输出。
代码如下:
clear-host
$mac=read-host -prompt "Please type the MAC address for the host "
$freeip=Get-DhcpServerv4FreeIPAddress -scopeid 10.10.10.0
Add-DhcpServerv4Reservation -ScopeId 10.10.10.0 -ClientId $mac -IPAddress $freeip
$reservedips=Get-DhcpServerv4Reservation -ScopeId 10.10.10.0
if ($reservedips -match $freeip) {
write-host "The ip $freeip has been succesfully reserved for the host with the MAC address $mac"
}
else {write-host "I'm sorry but there are no free ip addresses to be reserved"}
# this is just to see what's inside $reservedips
write-host $reservedips
为什么会这样?谢谢
【问题讨论】:
标签: powershell