我是powershell的新手。我想把IP地址加一。
$ipaddress = 15
$NICS = Get-WmiObject Win32_NetworkAdapterConfiguration | where {$_.IPEnabled -eq “TRUE”}
foreach($NIC in $NICs) {$NIC.EnableStatic("10.0.0.$($ipaddress++)", "255.255.255.0")
$NIC.SetGateways("10.0.0.1", 1)
$NIC.SetDNSServerSearchOrder("10.0.0.100")}
4条答案
按热度按时间rlcwz9us1#
使用这种方法,如果你试图创建一个错误的IP地址,你至少会得到一个异常。使用PS中可用的类型有很多好处。我看到其他建议的解决方案将允许你创建以
256
等结尾的东西。4dc9hkyq2#
你已经很接近了,你只需要在静态IP声明中使用
"10.0.0.$ipaddress"
,然后在另一行中用$ipaddress++
递增它。slsn1g293#
两个问题:
1.增量运算符是voidable statements,这意味着它们不会产生返回值,除非你把它们括在圆括号里。用于字符串插值的**$()不算,你需要在它里面再加一对圆括号。
1.当++*操作符跟在变量后面时,比如
$ipaddress++
,它是一个 * post -increment操作符,这意味着变量首先在表达式中求值,然后再递增,所以,即使你得到了第二对括号的返回结果,你也是在把$ipaddress**的原始值插入到字符串中,然后再修改它。把这些放在一起,你需要做的就是改变
到
问题的措辞含糊不清,我以为你说的"我想把IP地址加1",意思是你想把IP地址设置成比变量**$ipaddress**的值高1(我想这可能来自于在更早的时候读取当前的IP地址)。如果你的意思是你想给每个连续的NIC分配越来越多的IP地址,从15开始,那么TheMadTechnician的答案是有效的,但是你也可以用更简洁的方式来做,因为问题的根源是你用
$($ipaddress++)
在字符串中插入了一个空值:hyrbngr74#
嗨,感谢weq的回答,它让我找到了一种方法来做一个完整的8字节增量。我不知道这是否是你正在寻找的,但对我来说,这是非常有用的。
希望这个能帮上忙。