Private/Get-Id.ps1

function Get-Id {
    Param(
        [Parameter(Mandatory=$true)]
        [string]$Message,

        [Parameter(Mandatory=$false)]
        [ValidateSet('MD5','RIPEMD160','SHA1','SHA256','SHA384','SHA512')]
        [string]$HashName='MD5'
    )

    #Get Hash of Message
    $Bytes = [System.Text.Encoding]::UTF8.GetBytes($Message)
    $Hash = ([System.Security.Cryptography.HashAlgorithm]::Create($HashName).ComputeHash($Bytes) -join '').ToString()
    $HashLength = $Hash.Length

    #Max event ID cannot be higher than 65535, which is uint16 max value
    $MaxIDValue = ([uint16]::MaxValue).ToString()
    $MaxIDValueLength = $MaxIDValue.Length

    #Loop through the number until we find a number lower than 65535
    for ($i=0;$i -lt ($HashLength - $MaxIDValueLength);$i++) {
        $Output = $Hash.SubString($i,$MaxIDValueLength)
        if ($Output -lt $MaxIDValue) {
            return $Output
        }
    }
}