2011-12-04 17 views
0

私はコンピュータからIPアドレスを取得しようとしていて、そのアドレスが一定の範囲内にあるかどうかを確認しようとしています。しかし、私は本当にこれをどうやって正確に行うのかは確かです。Powershellで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アドレスには、コンピュータを形成取得する方法を考え出したが、その後範囲に対してそれをチェックすることは別の話ですしています私はIPアドレスを取得するために使用しています。私はステートメントをループしていたので、アドレスが範囲内にあれば何もしないでアドレスを出力します。私は、IPアドレスが適切な範囲にない場合、IPアドレスが変更されるためのelse文を作成しました。

間にあるものは見つかりません。私は192.168.0.10 - 192.168.0.50をスクリプト化する方法を知らない。 IPアドレスがその範囲にあることを確認できるようなものは本当に見つかりませんでした。言うまでもなく、明らかに動作しませんでした。

答えて

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 
       } 
      } 
     } 
    } 
}