PowerShell:Write-Progress无法使用RoboCopy,解决方法?

时间:2012-09-06 17:37:49

标签: powershell progress-bar robocopy

我已成功将Write-Progress合并到我的脚本中。当我的脚本到达使用RoboCopy的任何部分时Write-Progress消失,并在RoboCopy完成后重新出现:

Write-Progress -Id 1 -Activity $arg2 -PercentComplete $i -Status $arg1
RoboCopy C:\source C:\destination /MIR

我考虑过使用Start-Process来运行Write-Progress,但成效有限。任何帮助都将很高兴。

2 个答案:

答案 0 :(得分:1)

我能够回答我自己的问题。以下是使用Start-Job

的解决方案
Write-Progress -Id 1 -Activity $arg2 -PercentComplete $i -Status $arg1
Start-Job { RoboCopy C:\source C:\destination /MIR LOG+:C:\log.txt } > $null
cat C:\log.txt

让我解释一下。 Start-Job创建后台作业并将其自己的输出重定向到位桶。由于它是一个后台工作,我立即返回运行更多东西,比如cat,它会溢出RoboCopy日志文件的所有内容。最后,它应该开始工作。 YAY!

答案 1 :(得分:0)

我怀疑Robocopy接管控制台显示缓冲区以显示进度。尝试使用robocopy选项/NP /NJH /NJS。您可能还需要添加/NS /NC /NFL /NDL