我需要首先创建然后复制数百个文件夹&文件通过powershell(首先在本地商店创建它们,然后将它们复制到远程商店)。 但是,当我的foreach循环运行时,每40次左右的写入尝试因“阻止文件/文件夹的另一个进程”而失败。 我目前使用每个文件创建(100毫秒)之间的简单休眠来修复此问题。但是,我想知道是否有更好的方法来做到这一点?特别是在复制多个文件时,睡眠将取决于网络延迟,对我来说似乎不是一个好的解决方案。
在开始另一个操作之前,有没有办法“等待”直到文件的写入操作完成?或者检查文件是否仍被一个进程阻止并等待它再次空闲?
答案 0 :(得分:0)
您是否尝试将代码作为工作运行?例如:
foreach ($file in $files) {
$job = Start-Job -ScriptBlock {
#operation here..
} | Wait-Job
#Log result of job using ex. $job and: '$job | Receive-Job' to get output
}
您也可以将其扩展为创建多个作业,然后在继续之前使用Get-Job | Wait-Job
等待所有作业完成。