【问题标题】:Changing an IP Address in Powershell在 Powershell 中更改 IP 地址
【发布时间】:2011-12-04 01:55:05
【问题描述】:

我正在尝试从计算机获取 IP 地址,然后检查该地址是否在某个范围内。但是我真的不确定如何做到这一点。我已经想出了如何从计算机获取 IP 地址,但是根据范围检查它是另一回事......

这是我目前所拥有的:

Get-WMIObject win32_NetworkAdapterConfiguration |   Where-Object { $_.IPEnabled -eq $true } |   Foreach-Object { $_.IPAddress } |   Foreach-Object { [IPAddress]$_ } |   Where-Object { $_.AddressFamily -eq 'Internetwork'  } |   Foreach-Object { $_.IPAddressToString }

If ($_.IPAddressToString -eq 192.168.0.10 - 192.168.0.50)
{Write-host $_.IPAddressToString}
else ($_.IPAddressToString -ne 192.168.0.10 - 192.168.0.50)
{$_.IPAddressToString = 192.168.0.15}

第一行是我用来获取 IP 地址的内容。我正在循环 if 语句,以便如果地址在范围内,那么除了输出地址之外它不会做任何事情。如果IP不在正确的范围内,我做了一个else语句来更改IP地址。

我没有发现介于两者之间的任何东西。我不知道如何编写 192.168.0.10 - 192.168.0.50。我也找不到任何可以让我检查 IP 地址是否在该范围内的东西,所以我只使用了等于和不等于。不用说它显然没有用。

【问题讨论】:

    标签: powershell compare range ip-address


    【解决方案1】:

    试试这个,改变以适应你的低和高。

    $ipLow = [IPAddress] "192.168.9.10"
    $ipHigh = [IPAddress] "192.168.9.60"
    
    [Net.NetworkInformation.NetworkInterface]::GetAllNetworkInterfaces() | ? {$_.OperationalStatus -eq "Up"} | % {
        $addrs = $_.GetIPProperties().UnicastAddresses
        if ($addrs) {
            foreach ($addr in $addrs) {
                if ($addr.Address.AddressFamily -eq 'InterNetwork') {
                    if ($addr.Address.Address -ge $ipLow.Address -and $addr.Address.Address -le $ipHigh.Address) {
                        $addr.Address
                    }
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 2017-09-26
      • 2013-01-24
      • 1970-01-01
      • 2019-01-31
      • 2016-09-25
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多