用于将文件复制到 50 多台远程计算机的 Robocopy 命令
Posted
技术标签:
【中文标题】用于将文件复制到 50 多台远程计算机的 Robocopy 命令【英文标题】:Robocopy commands to copy a file to over 50 remote machines 【发布时间】:2015-01-04 12:22:46 【问题描述】:我昨天开始研究 robocopy,试图将文件从一个目标复制并覆盖到多台远程计算机。我试过Robocopy to copy files to a remote machine,但它不起作用。我得到与链接中的人相同的错误。有没有人有任何建议或以正确的方式引导我?非常感谢!
【问题讨论】:
如果您只复制一个文件,您可以使用 PowerShellCopy-Item C:\local\folder\file.txt \\Server\C$\Path
,因为它支持 UNC 路径
是否可以将一个文件放到我在 RemoteNames.txt 中的多台远程计算机上?感谢您花时间回答马特
【参考方案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-remoting。如果您不熟悉 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
【讨论】:
【参考方案2】:如果您需要使用不同的凭据进行连接,您可以使用
$credential = Get-Credential
New-PSDrive -Name "Computer01" -PSProvider FileSystem -Root "\\Computer01\Share" -Credential $credential -Scope global
现在您可以复制到例如计算机01:\文件夹01\
【讨论】:
【参考方案3】:如果您已将环境设置为支持 PSRemoting 并将文件放在文件共享中,则可以使用 PowerShell Remoting 指示多台计算机通过 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
【讨论】:
以上是关于用于将文件复制到 50 多台远程计算机的 Robocopy 命令的主要内容,如果未能解决你的问题,请参考以下文章