验证IP地址后出现奇怪的IP地址。 例如:
$ipnr = "010.010.010.100"
[System.Net.IPAddress]$ip = $ipnr
$ipnr
返回8.8.8.100。
看到'07'
这样的八位字节没有问题。它从'08'
开始。
我必须验证,因为字符串可以有前导零。
当然,我可以修剪并删除八位字节中的前导零,但是奇怪的是,使用[IPAddress]
进行的验证不起作用。
答案 0 :(得分:0)
带有前导零的数字被解释为八进制数字(八进制010 ==十进制8)。要解决此问题,请删除前导零,例如像这样:
[Net.IPAddress]$ip = [int[]]$ipnr.Split('.') -join '.'
或类似这样:
[Net.IPAddress]$ip = $ipnr -replace '(?<=^|\.)0+'