Powershell - 使用 Write-Progress 显示可执行文件的控制台输出?

Powershell - Using Write-Progress to show console output from an executable?

我有一个 Windows 可执行文件,我从 powershell 运行 使用:

&$命令|超出默认值

该命令可能需要几分钟才能完成 运行,并且会定期向控制台输出消息以显示其状态。当我使用上述样式通过 powershell 运行 这个可执行文件时,我看到可执行文件输出的消息显示在 powershell window 中。看起来不错,但我想开始使用 Write-Progress 来显示执行命令的状态。

有什么方法可以动态地将此可执行文件的输出(因为它 运行s)提供给 Write-Progress,以便它可以显示一个进度条,并将消息设置为输出的最后一行可执行文件?

通过简单地将可执行文件的输出通过管道传输到 ForEach-Object 并将其传递到 Write-Progress:

,即可将标准输出消息作为进度状态更新进行中继
function Invoke-WithProgress
{
  param([string]$Path)

  $Actvity = "Executing '$Path'..."

  # This one is optional
  Write-Progress -Activity $Actvity -Status "Starting out!"

  & $Path |%{
    # Provide each new line of output as a status update
    Write-Progress -Activity $Actvity -Status $_
  }

  # Complete the progress actvity
  Write-Progress -Activity $Actvity -Completed
}

Invoke-WithProgress $command