我正在复制大小很大的文件夹。 Copy-Item cmdlet需要更多时间。
由于我的系统是Windows 2003,我在robocopy中也没有多线程选项。
有没有办法使用PowerShell更快地复制?
答案 0 :(得分:3)
Samselvaprabu,我没有看到你的评论,因为它是对另一个用户答案的回复,我需要@
才能看到它......根据要求,这里是我的评论作为答案:
您最好使用第三方工具。看看these。 Powershell中真正的多线程很棘手。见code。这将允许单个powershell.exe实例的多个线程。您还可以使用后台作业(Start-Job)来实现并发处理。但是,我怀疑你会看到使用这些方法提高文件复制性能。我建议先尝试使用第三方工具。
答案 1 :(得分:2)
只有当您有多个旋转磁盘或多个SSD驱动器时,多线程副本才真正有意义。如果您只有两个旋转磁盘(源和目标),则多个线程只会增加争用磁盘带宽,并可能增加读取之间的寻找时间。
除非您将从多个设备或复制到多个设备,否则我不会打扰,即便如此,可能只有在源和目标上有多个设备时才会这样做
答案 2 :(得分:1)
这是复制作业的方法之一
$files= "c:\temp\file.zip"
$servers = get-content "c:\temp\servers.txt"
$Jobs = @()
$sb = {
Param ($Server, $files)
xcopy $files \\$Server\C$ /Y
}
foreach($server in $servers)
{
$Jobs += start-job -ScriptBlock $sb -ArgumentList $server, $files
}
$Jobs | Wait-Job | Remove-Job