从远程RDP复制文件到本地计算机

92

有没有一种方法可以启动远程 Windows 服务器的 RDP 会话,并将文件传输到本地计算机?远程 Windows Server 的版本各不相同,范围从 2000 到 2008。

我尝试查找解决方案,但似乎零散在各处。有些人建议使用 mstsc.exe,有些人建议使用 PowerShell / Java / ASP Net。我感到困惑。希望在这里得到一些指导。

谢谢!

以下更新:2012 年 2 月 17 日

感谢所有的建议。需要补充的是,远程服务器已经被安全锁定,我不被允许安装 SSH 服务器、FTP 服务器或共享驱动器。访问远程计算机的唯一途径是通过 RDP,并且这些机器也在单独的 VLAN 上,只有授权用户才能使用 RDP 访问这些机器。我正在尝试创建一个脚本,以帮助授权用户下载所需的文件。


你需要使用RDP吗?你能在远程Windows服务器上安装SSH服务器并通过SCP传输文件吗? - Alan
那么,几乎所有(大多数?...可能全部...)的文件传输方法都不可用于您。 - Andy Arismendi
如果我可以使用RDP将文件从远程服务器传输到我的本地计算机,那么问题是我是否可以自动化这个过程? - louis xie
1
哈哈,这完全不是一个SO问题,而是一个SU问题。 - Steven Lu
我可能错了,但我相信在写作时SU尚未被创建? - louis xie
显示剩余2条评论
9个回答

86

您可以使用远程桌面映射驱动器。

选项 > 本地资源 > 更多

enter image description here


谢谢,但我不能这样做。 - louis xie
3
RDP客户端需要提供一个选项,使远程驱动器可以传输到本地计算机,这样你就可以远程工作,并能将文件同步回本地计算机(同步是在本地发起的),并且需要在RDP会话中进行隧道化处理。 将本地驱动器打开给远程计算机是一个更大的安全漏洞,至少对于我来说是这样。而常规的SMB访问\machine通常无法用于云中的远程Windows虚拟机。 - jarmod
2
权衡:在您的计算机上创建一个网络共享,并将该共享连接为驱动器(从资源管理器中,选择“工具”>“映射网络驱动器”),然后将此驱动器添加到您希望远程服务器可以访问的驱动器列表中。然后,仅可以访问此文件夹中的文件。 - sleblanc
您还应确保在Windows服务器上运行远程桌面服务管理器或tsconfig.msc(或tscc.msc),以确保您连接的计算机没有任何限制。请参阅@Nixphoe在此帖子中的回答。 - BornToCode
1
不必映射整个驱动器,您可以使用subst创建一个新的驱动器号来映射文件夹,例如:subst p: C:\users\Example - eug

84

如果你不想要任何自动化的解决方案,可以在远程桌面上使用Ctrl + C,然后在本地使用Ctrl + V。 (请检查RD配置以启用复制和粘贴功能)


17
谢谢你,@Raymond。我并不是在寻找脚本解决方案。 - Joshua Pinter
4
对我来说不起作用。 - keramat

27

一旦你使用 mstsc 映射了所需的驱动器,你可以使用 \\tsclient 访问本地机器的文件系统,即通过 RDP 远程连接到远程计算机的终端服务客户端。

如果你只是想从远程计算机复制文件,只需要使用 \\machine\c$\path 等或共享文件夹并使用 \\machine\share 获取它们,此时不需要 RDP。


要使用 \\tsclient,您必须首先在我截图的GUI中选择要带入RDP会话的驱动器。 - Andy Arismendi
1
刚试了一下...除非我先通过mstsc GUI选择驱动器,否则不起作用。 - Andy Arismendi
@AndyArismendi - 当驱动器被映射时,它似乎只能工作。由于我的驱动器总是被映射,所以我认为这不是必需的。 - manojlds
@AndyArismendi - 你可以传递一个连接文件到mstsc并在其中指定重定向驱动器 - http://coe.uncc.edu/mosaic/remote_desk/RDP%20File%20Settings.htm - manojlds
但那太麻烦啦 :-) 当然,确实drivestoredirect:s:本地磁盘 (C:);RAID (E:); - Andy Arismendi
显示剩余2条评论

12

按照 Andy 的建议映射所需的驱动器后,您可以在 RDP 属性的“程序”选项卡中每次连接时执行一个本地批处理文件,指定其本地路径(使用 \\tsclient\c 引用本地驱动器)。
记得在该路径之前写上 cmd /c
批处理文件结束后,rdp 连接将自动关闭,但您可以在结尾处添加 pause 命令以查看执行期间发生了什么。

以这种方式连接,您可以在连接之前编辑批处理文件。

rdp execute BAT


7

请确保您的远程计算机已通过在PowerShell中运行以下命令启用PSRemoting

Enable-PSRemoting –Force

从客户端计算机上运行以下命令以建立连接。
net use "\\{RemoteIP}\c$" "{Password}" /USER:"{Username}" /persistent:no

从现在开始,您可以在网络上使用Copy-Item、Delete-Item。

Copy-Item [PACKAGEPATH]\* \\[COMPUTER]\c$\installers -recurse

6
  1. 在客户端电脑上,运行->mstsc.exe-> 本地资源-> 启用剪贴板。
  2. 在远程机器上 -> Windows运行命令(Windows键+R)。
  3. 打开cmd->(Taskkill.exe /im rdpclip.exe)输入括号命令。
  4. 您会看到 "Success",然后
  5. 在同一命令提示符下键入 "rdpclip.exe"。
  6. 现在复制和粘贴都可以正常工作。

3

1

eug写了一篇非常有用的评论,似乎被大家忽略了:

你可以使用subst将一个文件夹映射到驱动器号,然后在远程桌面中选择该驱动器来非常容易地共享单个文件夹

请注意,由于subst仅为运行它的用户执行映射,因此很容易出现问题。
因此,我建议从单个命令提示符中运行所有内容:

  1. 打开命令提示符(Win+R -> cmd)
  2. 键入subst <lettertomap>: <pathtofolder>
  3. 键入mstsc(启动远程桌面)

请记住,subst映射在重新启动后不会保留,因此这对于一次性文件传输会话非常方便。

实际上还有其他方法可以进行映射,详见 raymond.cc

是的,似乎这种映射也会阻止访问驱动器的其余部分,虽然我不会打赌它是否具有类似chroot的“漏洞”(假设它本来就是安全的)。


0

1)安装Dropbox或类似的云存储产品,并以此在计算机之间同步需要的文件。请记住,您可以仅允许特定设备上的特定文件夹进行同步(您不必同步整个Dropbox,只需需要的文件夹)。

2)如果您被允许在远程服务器上设置多个用户,请添加第二个用户,然后使用user2会话连接rdp用户1的会话。这样可以在云端保持用户1的GUI活动状态,而无需保持本地rdp登录状态。

这个视频应该会向您展示如何在服务器上实现这种2个用户设置来保持rdp会话处于打开状态。请注意,这将“永久性”使用1个rdp会话,直到您决定关闭它。 [Markdown无法嵌入视频 :( ]

然后在用户1的桌面上使用 AnyDesk 进行连接和操作。这包括使用 AnyDesk 的文件管理器浏览所需的任何文件夹并进行复制。如果通过直接 IP 连接进行连接,则 AnyDesk 可以免费使用。大多数 VPS 服务器都有专用的 IP 地址或子域地址,因此这不应该是一个问题。最好为您的 AnyDesk 登录设置密码,并限制可以访问未经监控的远程连接的 ID。AnyDesk 的文件管理器有点粗糙,但它确实有效。他们的重点是简单和快速。

注意:仅在远程用户的桌面上使用便携模式;不要完全安装AnyDesk。此外,CPU使用率可能会增加以流式传输桌面屏幕,与RDP窗口大小有关。我正在使用1280 x 2048窗口和4个核心,CPU使用率为22-25%空闲或移动物品。如果目标服务器上有更多的视频RAM或图形处理器,则这可能会减少。但是,如果您只“浏览文件”(仅使用文件管理器而不流式传输桌面),则CPU使用率> 0.3%空闲,传输文件时平均> 1%(当文件上传完成并且碎片正在完成时,暴增至5-6%)。
您需要编写自己的脚本(Java、.NET、C# / C ++、AutoIT等)来在本地启动AnyDesk并自动连接和下载特定文件。
这种策略有点复杂,但应该能够胜任工作。不确定为什么Microsoft RDP不能像Ammyy Admin AnyDesk那样拥有一些简单快速的文件管理器;哦,好吧。

地址:也可以使用AnyDesk或Teamviewer。 Teamviewer对于什么被认为是“非商业用途”变得更加严格,但Anydesk是安全的,占用空间更小,如果您可以直接连接,则似乎不太关心使用情况。 如果确实需要许可证,则会轻松解决问题。

AnyDesk可以在不需要任何安装的情况下完美运行。 实际上,如果像我上面描述的那样在服务器环境中使用,则不建议安装。

编辑:由于存在一些安全和技术问题,AmmyyAdmin已经不再推荐使用几个月了。添加了AutoIT作为脚本功能,以自动化与GUI / 几乎任何Windows功能的交互。


不确定为什么人们没有留下任何评论就给我点踩。我的解决方案确实绕过了管理员的服务器限制,并且具有基于脚本的解决方案,可以在服务器之间移动文件的潜力。 - Jon Grah
1
2019年,AnyDesk解决方案仍然完美地解决了类似的问题。 - Craig.Feied

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接