是否有更简单的方法来实现我的小技巧?更新IP地址子网内的特定八位字节
$ipsubnet
来自以下形式:X.X.X.0
我想给第三个X加上+1,例如X.X.(X+1).0
$tmp = $ipsubnet -replace '..$', ''
$tmp -match '.$'
$tmp2 = [int]$Matches[0]+1
$tmp = $tmp -replace '.$', '$tmp2'
$ipsubnet = $tmp + ".0"
是否有更简单的方法来实现我的小技巧?更新IP地址子网内的特定八位字节
$ipsubnet
来自以下形式:X.X.X.0
我想给第三个X加上+1,例如X.X.(X+1).0
$tmp = $ipsubnet -replace '..$', ''
$tmp -match '.$'
$tmp2 = [int]$Matches[0]+1
$tmp = $tmp -replace '.$', '$tmp2'
$ipsubnet = $tmp + ".0"
$sm = "255.255.48.0".Split('.')
if([int]$sm[2] -lt 255) { $sm[2]=([int]$sm[2]+1).ToString(); }
$sm = $sm -join "."
$sm
此答案将在第二行if语句考虑到在子网掩码(255)的八位位组的最大值。 它还允许您在第一行中提供基本字符串作为输入。这可以用一个变量代替。请注意,这不会'检查'子网掩码的有效性,因为只有特定的值才能构成有效的子网掩码。
感谢您使用此代码段,它可能会提供一些即时帮助。通过展示*为什么*这是一个很好的解决方案,对未来的读者会有更好的解决方案,这将为它的教育价值提供一个合适的解释[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的问题。请编辑您的答案以添加解释,并指出适用的限制和假设。 –
'“$([ipaddress](([ipaddress] $ ipsubnet).Address + 0x10000))”'如果3rd num小于255 – wOxxOm
不知道该类型存在,谢谢! –
如果您不知道网络掩码,我会建议您不要这样做。 –