PowerShell检查IP是否为保留IP
function Test-ReservedIP { param( [Parameter(Mandatory=$true)] [string]$IPAddress ) # 正则匹配 IPv4 格式 $ipv4Pattern = '^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$' if ($IPAddress -notMatch $ipv4Pattern) { Write-Error "无效的IPv4地址: $IPAddress" return $false } # 提取并转换为整数数组 $octets = $IPAddress.Split('.') | ForEach-Object { [int]$_ } # 验证每个八位组范围 foreach ($o in $octets) { if ($o -lt 0 -or $o -gt 255) { Write-Error "IP段超出范围 (0-255): $o" return $false } } # 将IPv4转换为32位无符号整数(大端序) $ipInt = ($octets[0] -shl 24) + ($octets[1] -shl 16) + ($octets[2] -shl 8) + $octets[3] # 定义保留IP范围(起始和结束整数) $reservedRanges = @( # 127.0.0.0/8 - Loopback @{ Start = 127 -shl 24; End = (127 -shl 24) + 0x00FFFFFF }, # 10.0.0.0/8 - Private @{ Start = 10 -shl 24; End = (10 -shl 24) + 0x00FFFFFF }, # 172.16.0.0/12 - Private (172.16.0.0 ~ 172.31.255.255) @{ Start = (172 -shl 24) + (16 -shl 16); End = (172 -shl 24) + (31 -shl 16) + 0xFFFF }, # 192.168.0.0/16 - Private @{ Start = (192 -shl 24) + (168 -shl 16); End = (192 -shl 24) + (168 -shl 16) + 0xFFFF }, # 169.254.0.0/16 - Link-local @{ Start = (169 -shl 24) + (254 -shl 16); End = (169 -shl 24) + (254 -shl 16) + 0xFFFF }, # 224.0.0.0/4 - Multicast (224.0.0.0 ~ 239.255.255.255) @{ Start = 224 -shl 24; End = (239 -shl 24) + 0x00FFFFFF }, # 192.0.2.0/24 - TEST-NET-1 (examples and tutorials) @{ Start = (192 -shl 24) + (0 -shl 16) + (2 -shl 8); End = (192 -shl 24) + (0 -shl 16) + (2 -shl 8) + 0xFF }, # 198.51.100.0/24 - TEST-NET-2 @{ Start = (198 -shl 24) + (51 -shl 16) + (100 -shl 8); End = (198 -shl 24) + (51 -shl 16) + (100 -shl 8) + 0xFF }, # 203.0.113.0/24 - TEST-NET-3 @{ Start = (203 -shl 24) + (0 -shl 16) + (113 -shl 8); End = (203 -shl 24) + (0 -shl 16) + (113 -shl 8) + 0xFF }, # 0.0.0.0/8 - This network @{ Start = 0; End = 0x00FFFFFF } ) # 判断是否在任一保留范围内 foreach ($range in $reservedRanges) { if ($ipInt -ge $range.Start -and $ipInt -le $range.End) { return $true } } return $false } $ip = "127.0.1.1" $isReserved = Test-ReservedIP -IPAddress $ip if ($isReserved) {"是保留IP"} else {"不是保留IP"}