powershell - Powershell - 使用 Write-Progress 显示可执行文件的控制台输出?
问题描述
我有一个 Windows 可执行文件,我使用以下命令从 powershell 运行:
&$命令 | 超出默认值
该命令可能需要几分钟才能运行,并且会定期向控制台输出消息以显示其状态。当我使用上述样式通过 powershell 运行此可执行文件时,我会看到可执行文件输出的消息显示在 powershell 窗口中。看起来不错,但我想开始使用 Write-Progress 来显示执行命令的状态。
有没有办法动态地将这个可执行文件的输出(当它运行时)提供给 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
推荐阅读
- go - gorm 使用 find 重新运行为空
- javascript - 以编程方式查找 chrome 中可用的最大可用缓存存储空间
- android - 应用程序设置允许通过移动网络下载?
- mysql - 将谷歌云存储连接到 mysql
- javascript - 添加和删除 VueJS 表单输入
- excel - 调试 Visual Basic 宏
- python - 如何在 python docx 中定位表格?
- python - 使用多处理池进行超参数调整
- amazon-web-services - 如何解决 s3-bucket-policy-grantee-check 不合规问题?
- reactjs - 关于使用 Mongoose/Elasticsearch 自动完成搜索栏的指南