Robocopy 在 PowerShell 中不工作

Robocopy is not working in PowerShell

我正在尝试 运行 PowerShell 中的 robocopy 脚本,以便我可以将其插入到我的其他 PowerShell 脚本中:

$SERVERPATH = "E:\Cisco Config Backups"
$NETWORKPATH = "\SERVER\Cisco Config Backups"
robocopy $SERVERPATH $NETWORKPATH /E /XC /XN /XO /R:0 /W:0 /COPY:T /LOG:C:\logs\robocopy_logs\config_copy.log /TEE /NP

然而,当我 运行 这段代码时,我看到 robocopy 正在工作,它给我以下输出: ROBOCOPY :: Windows

的强大文件复制
  Started : Thursday, June 30, 2016 1:52:56 PM
  Source : E:\Cisco Config Backups
  Dest : \SERVER\Cisco Config Backups

  Files : *.*

  Options : *.* /TEE /S /E /DCOPY:D /COPY:T /NP /XO /XN /XC /R:0 /W:0 

但没有任何内容被复制,我想使用 robocopy 进行日志记录,这样我就可以让它跳过已经存在的文件。

如果我做错了什么,请告诉我。

/COPY:T条件指定只复制文件时间戳,所以它不复制文件的实际数据。但是,由于目标上没有要将时间戳复制到的文件,因此什么也不会发生。

您至少需要指定 /COPY:DT 以便复制文件数据,但您可能只需完全删除 /COPY 开关,因为您可能还需要文件属性,这默认情况下将与文件数据和时间戳一起复制。

来自 robocopy /?:

/COPY:copyflag[s] :: what to COPY for files (default is /COPY:DAT).  
                    (copyflags : D=Data, A=Attributes, T=Timestamps).  
                    (S=Security=NTFS ACLs, O=Owner info, U=aUditing info)

您还需要检查您正在使用的所有开关,因为有些开关存在冲突——不确定在这些情况下 robocopy 做了什么。正如 Matt 在下面的评论中指出的那样,您有 /E/S。是否要复制空子目录? /E 指定复制空目录,但 /S 指定不复制空目录。