Enums/Enum.Constants.ps1

$Constants = [ordered] @{

    # Null GUID which is considered as "All"
    #$guidNull = New-Object -TypeName Guid -ArgumentList 00000000-0000-0000-0000-000000000000
    guidNull         = [System.guid]::New('00000000-0000-0000-0000-000000000000')

    # Horizontal Tab
    HTab             = "`t"

    # New NewLine
    NL               = [System.Environment]::NewLine

    # Regular Expression (RegEx) for SIDs
    SidRegEx         = [RegEx]::new('^S-1-(0|1|2|3|4|5|16|59)-\d+(-\d+)*$')

    # Regular Expression (RegEx) for DistinguishedName
    DnRegEx          = [RegEx]::new('^(?:(CN=(?<name>(?:[^,\\]|\\.)+),)*)?(OU=(?<ou>(?:[^,\\]|\\.)+),)*(DC=(?<dc1>(?:[^,\\]|\\.)+))(,DC=(?<dc2>(?:[^,\\]|\\.)+))+?$', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase)

    # Regular Expression (RegEx) for GUID
    <# Define GUID Regex
    Active Directory GUID is represented as a 128-bit number, typically displayed as a
    string of 32 hexadecimal characters, such as "550e8400-e29b-41d4-a716-446655440000"
        ^ asserts the start of the string.
        [0-9a-fA-F] matches any hexadecimal digit.
        {8} specifies that the preceding character class should appear exactly 8 times.
        - matches the hyphen character literally.
        {4} specifies that the preceding character class should appear exactly 4 times.
        {12} specifies that the preceding character class should appear exactly 12 times.
        $ asserts the end of the string.
    #>

    GuidRegEx        = [RegEx]::new('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$')

    # Message header for new regions. Used on NewCentralItOu to easily identify regions on transcript
    NewRegionMessage = @'

    ████████████████████████████████████████████████████████████████████████████████████████████████████
    █ █
    █ ╔══════════════════════════════════════════════════════════════════════╗ █
    █ ║ ║ █
    █ ║ New Region Start ║ █
    █ ║ ║ █
    █ ╚══════════════════════════════════════════════════════════════════════╝ █
    █ █
    ████████████████████████████████████████████████████████████████████████████████████████████████████

        REGION: {0}

'@


    # Standard header used on each function on the Begin section
    Header           = @'

    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
    ┃ EguibarIT module ┃
    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            Date: {0}
            Starting: {1}

    Parameters used by the function... {2}

'@


    # Standard footer used on each function on the Begin section
    Footer           = @'

        Function {0} finished {1}"

    ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫

'@


}

$Splat = @{
    Name        = 'Constants'
    Value       = $Constants
    Description = 'Contains the Constant values used on this module, like GUIDnull, Horizontal Tab or NewLine.'
    Scope       = 'Global'
    Option      = 'Constant'
    Force       = $true
}

# Check if the 'Constants' variable exists. Create it if not.
if (-not (Get-Variable -Name 'Constants' -Scope Global -ErrorAction SilentlyContinue)) {
    New-Variable @Splat
}

# Optional: Output the Constants for verification (verbose)
Write-Verbose -Message ('Constants have been initialized: {0}' -f $Constants)