Robocopy命令将文件复制到50多台远程计算机上

时间:2014-11-07 16:34:30

标签: copy overwrite powershell-remoting robocopy

我昨天开始查看robocopy,尝试将文件从一个目标复制并覆盖到许多远程计算机。我已经尝试了Robocopy to copy files to a remote machine,但它不起作用。我得到与链接中的人相同的错误。有没有人有任何建议或以正确的方式引导我?非常感谢你!

3 个答案:

答案 0 :(得分:1)

您可以使用PowerShell。它有一个效率低下的问题,它会一次复制一个,但对于50台机器来说这不应该是一个问题。如果您制作了PowerShell脚本,这可能会有所帮助

$computers = Get-Content "C:\filewithcomputers.txt"
$fileToCopy = "C:\filetocopy.txt"
ForEach($computer in $Computers){
    Copy-Item -Path $fileToCopy -Destination "\\$computer\C`$\Temp"
}

将文件$fileToCopy复制到文件C:\filewithcomputers.txt中的每个服务器,假设该文件包含计算机列表,每个计算机都有自己的行。该文件将被复制到每台计算机上的临时文件夹中。根据您的方案需要更新路径。自从您标记为后,我才建议您这样做。如果您不熟悉PowerShell,也许其他人可以为您提供更好的答案。将RoboCopy用于一个文件似乎很乏味。

如果您想检查文件夹是否存在且可以访问,您可以执行以下操作。

$computers = Get-Content "C:\filewithcomputers.txt"
$fileToCopy = "C:\filetocopy.txt"
ForEach($computer in $Computers){
    $destinationx86 = "\\$computer\C`$\Program Files (x86)"
    $destination = "\\$computer\C`$\Program Files"
    If(Test-Path $destinationx86){
        # Copy this to Program Files (x86)
        Copy-Item -Path $fileToCopy -Destination $destinationx86     
    } Else {
        # Copy this to Program Files
        Copy-Item -Path $fileToCopy -Destination $destination
    }

}

答案 1 :(得分:1)

如果您需要使用其他凭据进行连接,则可以使用

$credential = Get-Credential    
New-PSDrive -Name "Computer01" -PSProvider FileSystem -Root "\\Computer01\Share" -Credential $credential -Scope global

现在你可以复制到例如COMPUTER01:\ FOLDER01 \

答案 2 :(得分:0)

如果您已将环境设置为支持PSRemoting并将文件放在文件共享中,则可以使用PowerShell远程处理指示许多计算机几乎与Invoke-Command同时检索文件。您可以使用-ThrottleLimit限制同时操作的数量,具体取决于源文件的大小以及网络/服务器的稳健性:

$computers = Get-Content "C:\filewithcomputers.txt"
$originalsource = "\\fileserver\shared\payload.exe"
$originaldestination = "c:\"
$scriptblockcontent = {
    param($source,$destination)
    Copy-Item -Path $source -Destination $destination
    }
Invoke-Command –ComputerName $Computers –ScriptBlock $scriptblockcontent `
   –ThrottleLimit 50 -ArgumentList $originalsource,$originaldestination