验证IP地址的奇怪行为

时间:2019-04-16 09:23:25

标签: powershell

验证IP地址后出现奇怪的IP地址。 例如:

$ipnr = "010.010.010.100"
[System.Net.IPAddress]$ip = $ipnr

$ipnr返回8.8.8.100。

看到'07'这样的八位字节没有问题。它从'08'开始。 我必须验证,因为字符串可以有前导零。 当然,我可以修剪并删除八位字节中的前导零,但是奇怪的是,使用[IPAddress]进行的验证不起作用。

1 个答案:

答案 0 :(得分:0)

带有前导零的数字被解释为八进制数字(八进制010 ==十进制8)。要解决此问题,请删除前导零,例如像这样:

[Net.IPAddress]$ip = [int[]]$ipnr.Split('.') -join '.'

或类似这样:

[Net.IPAddress]$ip = $ipnr -replace '(?<=^|\.)0+'
相关问题