如何使用powershell进行多线程复制



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

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

有没有办法用powershell更快地复制?

Samselvaprabu,我没有看到你的评论,因为这是对另一个用户的回答的回复,它需要一个@才能让我看到…以下是我的回答:

你最好使用第三方工具。看看这些。Powershell中真正的多线程是很棘手的。请看下面的代码。这将允许多个线程运行一个powershell.exe实例。您还可以使用后台作业(Start-Job)来实现并发处理。但是,我怀疑使用这些方法是否会提高文件复制性能。我建议先试试第三方工具

只有当您有多个旋转磁盘或多个SSD驱动器时,多线程复制才真正有意义。如果只有两个旋转磁盘(源磁盘和目标磁盘),那么多个线程只会增加磁盘带宽的争用,并可能增加两次读取之间的查找时间。

除非你从多个设备复制或者从复制到多个设备,否则我不会麻烦你,即使这样,也可能只有在源和目标上有多个设备的情况下。

这是复制为job的方法之一

$files= "c:tempfile.zip"
$servers =  get-content "c:tempservers.txt"
$Jobs = @()
$sb = {
       Param ($Server, $files)
       xcopy $files \$ServerC$ /Y
      }
foreach($server in $servers)
{
    $Jobs += start-job -ScriptBlock $sb -ArgumentList $server, $files
}
$Jobs | Wait-Job | Remove-Job

最新更新