如何使用PowerShell进行多线程复制?

时间:2011-12-18 05:23:43

标签: powershell powershell-v2.0

我正在复制大小很大的文件夹。 Copy-Item cmdlet需要更多时间。

由于我的系统是Windows 2003,我在robocopy中也没有多线程选项。

有没有办法使用PowerShell更快地复制?

3 个答案:

答案 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