You need to enable JavaScript to run this app. 已远程登录srv1,用robocopy从cl1复制文件到srv1的路径区分方法
优惠活动
大模型
产品
解决方案
定价
更多

已远程登录srv1,用robocopy从cl1复制文件到srv1的路径区分方法

路径混淆的根因

PowerShell 远程会话连通后,所有不带机器标识的裸路径(即直接写C:\xxx的格式),永远指向当前会话所在机器的本地文件系统。你现在已经进入srv1的远程会话,命令行上下文属于srv1,这时候敲出来的所有C:\xxx默认都是srv1的本地路径,自然没法和cl1上同盘符的路径做区分。

可直接落地的操作方案

方案1:退出远程会话,用UNC路径跑robocopy

这是最贴近你原本使用习惯的实现方式:

  • 在当前srv1的远程会话里输Exit-PSSession,切回cl1的本地PowerShell环境
  • 执行robocopy时,给srv1的目标路径加上UNC机器前缀,cl1的源路径直接写本地路径就行。举个实际例子:
    要把cl1上C:\src\work_files的全部内容,复制到srv1的C:\dst\backup目录,完整命令为:
    robocopy C:\src\work_files \\<srv1_IP>\C$\dst\backup /E
  • 这里用的是Windows默认开启的C$管理员共享,因为你之前已经用$cred完成了两台实例的认证,只要cl1的当前账号对srv1的C$共享有访问权限,不需要重复输密码。

方案2:不中断当前srv1的远程会话,反向标识cl1的源路径

如果你不想退出当前在srv1上的操作,根本不需要切回cl1,只需要把原计划写cl1本地路径的位置,换成指向cl1的UNC路径即可:

  • 还是上面的示例场景,在srv1的远程会话里执行的命令为:
    robocopy \\<cl1_IP>\C$\src\work_files C:\dst\backup /E
  • 路径归属完全清晰:带\\cl1_IP前缀的是cl1上的源路径,裸写C:\开头的是当前srv1的目标路径,不存在混淆可能。

方案3:用PowerShell原生跨会话复制,彻底避开路径归属问题

如果不需要用到robocopy的断点续传、ACL权限保留、长路径支持等高级特性,可以用PowerShell内置的会话绑定复制能力,完全不依赖UNC共享配置:

  • 建立到srv1的远程会话时,把会话对象存在本地变量里,比如:$sess = New-PSSession -ComputerName <srv1_IP> -Credential $cred
  • 后续复制操作通过会话对象绑定路径归属,根本不需要写UNC路径:
    从cl1往srv1复制:Copy-Item -Path C:\src\work_files -Destination C:\dst\backup -ToSession $sess -Recurse
    从srv1往cl1复制:Copy-Item -Path C:\dst\backup -Destination C:\src\work_files -FromSession $sess -Recurse
注意事项
  • 走C$这类默认管理员共享的前提,是两台实例的防火墙放行“文件和打印机共享”规则,sky-high平台的已互联实例默认已经开通该规则,不需要额外调整。
  • 如果不想用管理员共享,可以在cl1上把需要复制的源文件夹手动设置为共享,给当前使用的账号配好读写权限,之后把路径替换成\\<cl1_IP>\<自定义共享名>\子路径即可,效果和C$共享完全一致。

内容的提问来源于stack exchange,提问作者HermanHG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 09:45:07