Private/Write-Log.ps1

function Write-Log {
    param
    (
        $message
        ,
        $foregroundColor = "Blue"
    )
    
    # Only do this work if verbose is active
    if ($VerbosePreference -ne 'SilentlyContinue') {
        # Map color names to ANSI escape codes
        $colorMap = @{
            'Blue' = '94'
            'Green' = '92'
            'Yellow' = '93'
            'Red' = '91'
            # Add more colors as needed
        }
        
        $colorCode = '94' # Default to blue
        
        # Use ANSI escape sequences for color in verbose output
        $colorStart = "`e[${colorCode}m"
        $colorEnd = "`e[0m"
        $coloredMessage = "${colorStart}[$([datetime]::Now.ToString("s"))] $message${colorEnd}"
        
        $Host.UI.WriteVerboseLine($coloredMessage)
    }
    else {
        # Standard verbose message when not directly outputting
        Write-Verbose "[$([datetime]::Now.ToString("s"))] $message"
    }
}