我正在尝试从计算机获取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不在合适的范围内,我为IP地址做了一个else语句。
我发现之间没有任何内容。我不知道如何编写192.168.0.10 - 192.168.0.50的脚本。我也无法找到任何允许我检查IP地址是否在该范围内的东西,所以我只是使用等于而不等于。不用说它显然不起作用。
答案 0 :(得分: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
}
}
}
}
}