Private/GetMaxAddressCount.ps1

function GetMaxAddressCount {
    [CmdletBinding(DefaultParameterSetName='Mask')]
    param(
        [Parameter(ParameterSetName='Mask')]
        [ValidateScript({$_ -in $(GetValidMask)})]
        [ipaddress]$Mask,
        [Parameter(ParameterSetName='MaskLength')]
        [ValidateRange(0,32)]
        [int]$MaskLength,
        [switch]$Usable
    )
    begin{}
    process{
        $Length = switch ($PSCmdlet.ParameterSetName) {
            Mask { $(GetValidMask).IndexOf($Mask) }
            MaskLength { $MaskLength }
        }
        $Total = [math]::Pow(2,(32-$Length))
        $result = if($Usable){ if($Total -le 2){0}else{$Total - 2} }else{$Total}
        $result
    }
    end{}
}