You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PS 7.x多进度活动下Write-Progress失效问题求助

问题原因与修复方案

这不是BUG,是PowerShell 7.x对Write-Progress的行为做了优化调整。7.x版本默认会对进度输出做合并和节流处理,当第一个进度活动标记为-Completed后,后续未指定唯一标识的新进度活动可能无法正确触发显示。

修复方法很简单:给每个独立的进度活动分配唯一的-Id参数,让PowerShell能明确区分不同的进度任务。修改后的脚本如下:

$numOps = 40
$progressPerOp = 100 / $numOps # 100/total number of operations
$progressOpsComplete = 0
# 第一个进度活动,指定Id为0
for ($i = 1; $i -le $numOps; $i++) {
    $percent = $progressPerOp * $progressOpsComplete
    Write-Progress -Id 0 -Activity "testing progress indicator" -Status "Processing...$percent%" -PercentComplete ($progressPerOp * $progressOpsComplete)
    Start-Sleep -Milliseconds 50
    $progressOpsComplete++
}
$percent = $progressPerOp * $progressOpsComplete
Write-Progress -Id 0 -Activity "testing progress indicator" -Status "Processing...$percent%" -PercentComplete ($progressPerOp * $progressOpsComplete)
Write-Progress -Id 0 -Activity "testing progress indicator" -Completed
write-host "`$progressPerOp:$progressPerOp  `$progressOpsComplete:$progressOpsComplete"
# 第二个进度活动,指定Id为1
Write-Progress -Id 1 -Activity "waiting 10 seconds" -Status "waiting"
sleep 6
Write-Progress -Id 1 -Activity "waiting 10 seconds" -Completed

原理是:-Id参数用于标识不同的进度活动实例,PowerShell会为每个Id维护独立的进度状态,避免因前一个活动完成后导致后续无Id的进度被忽略。

内容的提问来源于stack exchange,提问作者Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:48:10