Public/Test-IPv4SameSubnet.ps1
function Test-IPv4SameSubnet { [CmdletBinding()] Param( [Parameter(Mandatory=$true)] [string]$IPAddress1, [Parameter(Mandatory=$true)] [string]$IPAddress2 ) $IPresolved1 = Resolve-IPv4Address -IPAddress $IPAddress1 $IPresolved2 = Resolve-IPv4Address -IPAddress $IPAddress2 $result = $false if (($null -ne $IPresolved1) -and ($null -ne $IPresolved2)) { if ($IPresolved1.IPAddress -eq $IPresolved2.IPAddress) { $result = $true } elseif ($IPresolved1.SubnetMaskLength -eq $IPresolved2.SubnetMaskLength) { if ($IPresolved1.Subnet -eq $IPresolved2.Subnet) { $result = $true } } else { if ($IPresolved1.SubnetMaskLength -gt $IPresolved2.SubnetMaskLength) { $subnetMaskLength = $IPresolved1.SubnetMaskLength $subnet1 = $IPresolved1.Subnet $subnet2 = (Resolve-IPv4Address "$($IPresolved2.IPAddress)/$subnetMaskLength").Subnet } else { $subnetMaskLength = $IPresolved2.SubnetMaskLength $subnet1 = $IPresolved2.Subnet $subnet2 = (Resolve-IPv4Address "$($IPresolved1.IPAddress)/$subnetMaskLength").Subnet } if ($subnet1 -eq $subnet2) { $result = $true } } } return $result } |