我对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")}
答案 0 :(得分:0)
你很亲密。您只想在静态IP声明中使用"10.0.0.$ipaddress"
,然后在另一行使用$ipaddress++
增加它。
$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")
$IPAddress++}
答案 1 :(得分:0)
两个问题:
增量运算符为voidable statements,这意味着除非将它们括在括号中,否则它们不会产生返回值。用于字符串插值的 $()不算数,你需要另外一对括号。
当 ++ 运算符跟随变量时,就像$ipaddress++
一样,它发布 -increment运算符,这意味着首先在表达式中计算变量,然后递增。因此,即使您使用第二对括号获得返回结果,也可以将 $ ipaddress 的原始值插入到字符串中,然后更改它。
把所有这些放在一起,你需要做的就是改变
foreach ($NIC in $NICs) {$NIC.EnableStatic("10.0.0.$($ipaddress++)", "255.255.255.0")
到
foreach ($NIC in $NICs) {$NIC.EnableStatic("10.0.0.$((++$ipaddress))", "255.255.255.0")
<小时/> 的更新强>
问题的措辞含糊不清。我认为通过&#34;我想将IP地址递增1和#34;,这意味着您要将IP地址设置为高于变量 $ ipaddress 的值1(我认为这可能来自于早些时候读取当前的IP地址)。如果你的意思是你想为每个连续的NIC分配不断增加的IP地址,从15开始,那么TheMadTechnician的回答是可行的,但你也可以这样做更紧凑,因为问题的根源是您使用$($ipaddress++)
foreach ($NIC in $NICs) {$NIC.EnableStatic("10.0.0.$(($ipaddress++))", "255.255.255.0")
答案 2 :(得分:0)
如果您尝试创建错误的 IP 地址,使用此方法至少会得到一个异常。使用 PS 中可用的类型有很多好处。我看到其他提议的解决方案将允许您创建以 256
等结尾的内容。
[IPAddress](([IPAddress]"10.0.0.15").Address + (1 -shl 24)