2011-12-04 2 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 주소를 얻기 위해 사용하고있다. 주소가 범위에 있다면 아무 것도하지 않고 주소를 출력하도록 if 문을 반복했습니다. 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 
       } 
      } 
     } 
    } 
}