Init/Get-Emoji.ps1
#requires -version 5 <# .SYNOPSIS Helper functions for console output with emoji support across PowerShell versions. .DESCRIPTION Provides emoji output that works consistently across PowerShell 5.1, 7.0+, and different console hosts (Windows PowerShell console, PowerShell Core, VS Code terminal, etc.). #> # Global emoji character mapping # Using ASCII codes for PS5 to avoid encoding issues $script:EmojiMap = @{ 'checkmark' = if ($PSVersionTable.PSVersion.Major -ge 7) { '✅' } else { "[$([char]0x221A)]" } # √ (square root) 'cross' = if ($PSVersionTable.PSVersion.Major -ge 7) { '❌' } else { "[$([char]0x00D7)]" } # × (multiplication sign) 'warning' = if ($PSVersionTable.PSVersion.Major -ge 7) { '⚠️' } else { "[$([char]0x26A0)]" } # ⚠ (warning sign) 'info' = if ($PSVersionTable.PSVersion.Major -ge 7) { 'ℹ️' } else { "[$([char]0x0069)]" } # i (lowercase i) 'star' = if ($PSVersionTable.PSVersion.Major -ge 7) { '⭐' } else { "[$([char]0x002A)]" } # * (asterisk) 'party' = if ($PSVersionTable.PSVersion.Major -ge 7) { '🎉' } else { "[$([char]0x005E)]" } # ^ (caret) 'hourglass' = if ($PSVersionTable.PSVersion.Major -ge 7) { '⏳' } else { "[$([char]0x007E)]" } # ~ (tilde) 'unknown' = if ($PSVersionTable.PSVersion.Major -ge 7) { '❓' } else { "[$([char]0x003F)]" } # ? (question mark) 'right' = if ($PSVersionTable.PSVersion.Major -ge 7) { '➡️' } else { "[$([char]0x00BB)]" } # » (right double angle) 'left' = if ($PSVersionTable.PSVersion.Major -ge 7) { '⬅️' } else { "[$([char]0x00AB)]" } # « (left double angle) } function Get-Emoji { <# .SYNOPSIS Gets an emoji character or fallback for the current PowerShell version. .DESCRIPTION Returns an emoji character on PowerShell 7+ or a text fallback on PowerShell 5.1. This ensures consistent output across different PowerShell versions and console hosts. .PARAMETER Name The name of the emoji to retrieve. Valid values: - checkmark (✅ or √) - cross (❌ or ×) - warning (⚠️ or ⚠) - info (ℹ️ or i) - star (⭐ or *) - party (🎉 or ^) - hourglass (⏳ or ~) - unknown (❓ or ?) - right (➡️ or ») - left (⬅️ or «) .EXAMPLE Write-Host "$(Get-Emoji checkmark) Success" # PowerShell 7+: ✅ Success # PowerShell 5.1: √ Success .EXAMPLE Write-Warning "$(Get-Emoji warning) Configuration file not found" # PowerShell 7+: ⚠️ Configuration file not found # PowerShell 5.1: ⚠ Configuration file not found #> [CmdletBinding()] [OutputType([string])] param( [Parameter(Mandatory, Position = 0)] [ValidateSet('checkmark', 'cross', 'warning', 'info', 'star', 'party', 'hourglass', 'unknown', 'right', 'left')] [string] $Name ) if ($script:EmojiMap.ContainsKey($Name)) { return $script:EmojiMap[$Name] } else { Write-Warning "Unknown emoji name: $Name" return '[?]' } } |