Robocopy commands to copy a file to over 50 remote machines

泪湿孤枕 提交于 2020-01-05 08:13:33

问题


I started looking at robocopy yesterday to try to copy and overwrite a file from one destination to many remote computers. I've tried Robocopy to copy files to a remote machine but it doesn't work. I get the same error as the person in the link. Does anybody have any suggestions or lead me in the right way ? thank you so much !


回答1:


You could just use PowerShell for this. It has an inefficiency issue wherein it would copy one at a time but that shouldnt be an issue for 50ish machines. This could help if you made a PowerShell script

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

The would copy the file $fileToCopy to each server in the file C:\filewithcomputers.txt assuming that the file contained a list of computer with each one on its own line. The file would be copied to the temp folder on each machine. Update the paths as required for your scenario. I only suggest this since you tagged powershell-remoting. If you are not adept with PowerShell maybe someone else can give you a better answer more of what you are looking for. Using RoboCopy for one file seemed tedious.

If you wanted to check to see if a folder exists and is accessible you could do something like this.

$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
    }

}



回答2:


If you need to connect with different credentials, you can use

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

Now you can copy to e.g. Computer01:\Folder01\




回答3:


If you have set your environment up to support PSRemoting and have placed the file in a file share you can use PowerShell Remoting to instruct many computers to retrieve the file themselves nearly simultaneously with Invoke-Command. You can limit the number of simultaneous actions using -ThrottleLimit depending on the size of the source file and how robust the network/server are:

$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


来源:https://stackoverflow.com/questions/26805835/robocopy-commands-to-copy-a-file-to-over-50-remote-machines

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!