如何延迟Complete-BitsTransfer直到转移完成?

时间:2016-12-17 00:16:37

标签: powershell file-transfer microsoft-bits

以下位传输启动了一堆位作业,当我稍后手动完成传输时,它可以正常工作:Get-BitsTransfer | Complete-BitsTransfer

我尝试在完成之前编写延迟脚本无效。 While未处理,或者可能在传输作业开始之前处理它。

loop starts many jobs...
    $job = Start-BitsTransfer -Source $fileUrl -Destination $fileDest -Asynchronous
...end loop

While ($job.JobState -eq "Transferring") {
    Sleep -Seconds 1
}

Get-BitsTransfer | Complete-BitsTransfer

有任何建议如何在执行完成之前允许-Asynchronous个工作有机会加载吗?

在等待之前添加了1秒的延迟后,上面的脚本等待。看似hacky。

1 个答案:

答案 0 :(得分:0)

cezarypiatek值得这样的回答:

问题是While循环只检查最后一个包。代码更正为:

$job - @()
loop starts many jobs...
    $job += Start-BitsTransfer -Source $fileUrl -Destination $fileDest -Asynchronous
...end loop

While ($job | Where-Object{$job.JobState -eq "Transferring"}) {
    Sleep -Seconds 1
}

Get-BitsTransfer | Complete-BitsTransfer