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
我有一个 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