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
}