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

PowerShell脚本中使用Measure-Command无法显示命令输出的解决方法

问题解决:PowerShell计时脚本无法显示命令输出

问题根源

你写的timeSeb.ps1里,$args | Out-Default根本没执行dir -force .smplayer命令——它只是把脚本接收的三个参数(dir、-force、.smplayer)当成字符串输出了。而你在交互式会话里直接写Measure-Command { dir -force .smplayer },才是真正执行了dir命令,所以能看到文件列表。

正确脚本写法

下面两种方案任选:

方案1:实时显示命令输出(计时包含输出耗时)

这个方案和你交互式操作的体验一致,边执行命令边看结果,计时会包含输出到控制台的时间:

Write-Host "执行命令: $($args -join ' ')"

# 调用目标命令并直接输出结果到控制台
$executionTime = Measure-Command {
    & $args[0] $args[1..($args.Count - 1)] | Out-Host
}

Write-Host "`n执行耗时: $($executionTime.TotalMilliseconds) 毫秒"

方案2:先执行再输出(计时更精准)

这个方案先把命令结果存起来,计时完成后再输出,统计的是纯命令执行时间,不含控制台渲染耗时:

Write-Host "执行命令: $($args -join ' ')"

$commandOutput = $null
$executionTime = Measure-Command {
    # 执行命令并保存输出
    $commandOutput = & $args[0] $args[1..($args.Count - 1)]
}

# 输出命令结果
$commandOutput | Out-Default

Write-Host "`n执行耗时: $($executionTime.TotalMilliseconds) 毫秒"

关键说明

  • &是PowerShell的调用运算符,用来执行指定的命令(这里$args[0]就是你传入的dir),后面的$args[1..]是传递给命令的参数。
  • Out-Host会直接把输出发送到控制台,不会被Measure-Command捕获,这是方案1能实时看到结果的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:14:51