Private/Helper/Test-IsPrivateIP.ps1

<#
Copyright © 2024 Integris. For internal company use only. All rights reserved.
#>


FUNCTION Test-IsPrivateIP {
    <#
    .SYNOPSIS
    Determines if an IP address is a private IP address.
 
    .DESCRIPTION
    This function checks if the provided IP address falls within the ranges designated for private networks.
 
    .PARAMETER IPAddress
    The IP address to be checked.
 
    .EXAMPLE
    Test-IsPrivateIP -IPAddress "192.168.1.1"
 
    .NOTES
    Private IP ranges include 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.1, and 169.254.0.0/16.
    #>


    [CmdletBinding()]
    PARAM (
        [Parameter(Mandatory)]
        [System.Net.IPAddress]$IPAddress
    )

    $Split = $IPAddress.IPAddressToString.Split('.')

    IF ($IPAddress -eq "127.0.0.1") { RETURN $True }
    IF ($Split[0] -eq 10) { RETURN $True }
    IF ($Split[0] -eq 192 -and $Split[1] -eq 168) { RETURN $True }
    IF ($Split[0] -eq 172 -and $Split[1] -ge 16 -and $Split[1] -le 31) { RETURN $True }
    IF ($Split[0] -eq 169 -and $Split[1] -eq 254) { RETURN $True }
    
    RETURN $False
}