我正在复制大小很大的文件夹。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