想要在循环中增加IP地址字符串

时间:2014-07-18 21:56:43

标签: powershell

我对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")}

3 个答案:

答案 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)

两个问题:

  1. 增量运算符为voidable statements,这意味着除非将它们括在括号中,否则它们不会产生返回值。用于字符串插值的 $()不算数,你需要另外一对括号。

  2. ++ 运算符跟随变量时,就像$ipaddress++一样,它发布 -increment运算符,这意味着首先在表达式中计算变量,然后递增。因此,即使您使用第二对括号获得返回结果,也可以将 $ ipaddress 的原始值插入到字符串中,然后更改它。

  3. 把所有这些放在一起,你需要做的就是改变

    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)