Public/New-Ulid.ps1

function New-Ulid {
    param(
        $Time,
        [switch] $Lowercase
    )

    if (!$Time) {
        $Time = Get-Now
    }
    if ($Lowercase) {
        $Encoding = $Encoding.toLower()
    }

    $Timestamp = Convert-Time -Time $Time
    $Randomness = Convert-Random -Length 16
    $String = $Timestamp + $Randomness

    $Object = [PSCustomObject]@{
        'Timestamp'  = $Timestamp
        'Randomness' = $Randomness
        'Ulid'       = $String
    }

    return $Object
}