如何在PowerShell中捕获外部命令进度?
我正在使用PowerShell脚本在网络目录之间同步文件。Robocopy正在后台运行 为了捕获输出并向用户提供统计信息,目前我正在执行以下操作:如何在PowerShell中捕获外部命令进度?,powershell,robocopy,Powershell,Robocopy,我正在使用PowerShell脚本在网络目录之间同步文件。Robocopy正在后台运行 为了捕获输出并向用户提供统计信息,目前我正在执行以下操作: $out = (robocopy $src $dst $options) 完成后,自定义windows窗体将显示一个包含输出字符串的多行文本框 但是,这样做会停止脚本执行,直到完成文件复制。由于所有其他输入屏幕都以图形对话的形式呈现给用户,因此我希望以图形方式向用户提供进度输出 是否有一种方法可以动态地从robocopy捕获stdout 那么下一个
$out = (robocopy $src $dst $options)
完成后,自定义windows窗体将显示一个包含输出字符串的多行文本框
但是,这样做会停止脚本执行,直到完成文件复制。由于所有其他输入屏幕都以图形对话的形式呈现给用户,因此我希望以图形方式向用户提供进度输出
是否有一种方法可以动态地从robocopy
捕获stdout
那么下一个问题是:
如何使用文本框将输出导入表单?您可以在后台运行robocopy作业并不断检查进度
Start Job
将在后台启动流程接收作业
将为您提供迄今为止打印的所有数据
$job = Start-Job -scriptBlock { robocopy $using:src $using:dst $using:options }
$out = ""
while( ($job | Get-Job).HasMoreData -or ($job | Get-Job).State -eq "Running") {
$out += (Receive-job $job)
Write-output $out
Start-Sleep 1
}
Remove-Job $job
嗨,我相信你可以利用这个答案: