2017-06-20 54 views
1

是否有更简单的方法来实现我的小技巧?更新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" 
+3

'“$([ipaddress](([ipaddress] $ ipsubnet).Address + 0x10000))”'如果3rd num小于255 – wOxxOm

+0

不知道该类型存在,谢谢! –

+0

如果您不知道网络掩码,我会建议您不要这样做。 –

回答

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)的八位位组的最大值。 它还允许您在第一行中提供基本字符串作为输入。这可以用一个变量代替。请注意,这不会'检查'子网掩码的有效性,因为只有特定的值才能构成有效的子网掩码。

+1

感谢您使用此代码段,它可能会提供一些即时帮助。通过展示*为什么*这是一个很好的解决方案,对未来的读者会有更好的解决方案,这将为它的教育价值提供一个合适的解释[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的问题。请编辑您的答案以添加解释,并指出适用的限制和假设。 –