Private/Get-SubnetMask.ps1

<#
.SYNOPSIS
    Converts a given Cidr to its subnet mask

.PARAMETER Cidr
    The download page to look for the download link.

.EXAMPLE
    Get-SubnetMask -Cidr 24
#>

Function Get-SubnetMask {
    Param(
        [Parameter(Mandatory)]
        [ValidateRange(0, 32)]
        [int]$Cidr
    )

    # Create a 32-character string of '1's for the network portion and '0's for the host portion
    $binaryString = ('1' * $Cidr).PadRight(32, '0')

    # Split the binary string into four 8-bit octets
    $octet1 = $binaryString.Substring(0, 8)
    $octet2 = $binaryString.Substring(8, 8)
    $octet3 = $binaryString.Substring(16, 8)
    $octet4 = $binaryString.Substring(24, 8)

    # Convert each binary octet to a decimal number
    $decimalOctet1 = [convert]::ToInt32($octet1, 2)
    $decimalOctet2 = [convert]::ToInt32($octet2, 2)
    $decimalOctet3 = [convert]::ToInt32($octet3, 2)
    $decimalOctet4 = [convert]::ToInt32($octet4, 2)

    # Format and return the subnet mask string
    return "$decimalOctet1.$decimalOctet2.$decimalOctet3.$decimalOctet4"
}