src/TaskbarProgress.ps1

$script:TaskbarProgressEnabled = $false
if ($Host.UI.SupportsVirtualTerminal -and -not [System.Console]::IsOutputRedirected) {
    $script:TaskbarProgressEnabled = $true
}

function Write-TaskbarProgress {
    param([int]$Percent)
    if (-not $script:TaskbarProgressEnabled) { return }
    if ($PSBoundParameters.ContainsKey('Percent')) {
        $p = [Math]::Max(0, [Math]::Min(100, $Percent))
        Write-Host -NoNewline "`e]9;4;1;$p`e\"
    } else {
        Write-Host -NoNewline "`e]9;4;3;0`e\"
    }
}

function Write-TaskbarProgressClear {
    if ($script:TaskbarProgressEnabled) {
        Write-Host -NoNewline "`e]9;4;0;0`e\"
    }
}

function Write-TaskbarProgressError {
    if ($script:TaskbarProgressEnabled) {
        Write-Host -NoNewline "`e]9;4;2;100`e\"
    }
}