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