Public/New-Ulid.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
}