copy-item 仅在第二次运行脚本时对子目录起作用

copy-item 仅在第二次运行脚本时对子目录起作用

我有一个用于备份文件的脚本。出于某种原因,脚本第二次运行时只复制子文件夹的文件和目录。错误消息是

“无法将容器复制到现有的叶项目上”。

我正在搜索这个错误,他们说我正在将一个文件复制到同一个文件名上,但这是一个子目录,在脚本第一次运行时甚至没有创建。我第一次运行这个时目标文件夹是空的。有什么想法吗?

源目录如下所示:

 \\DRIVE01\Svcs
              \Credential
                     \Forms
                         file and dir list   #this dir level doesn't get copied the first time, but the files do

第一次执行后 toLoc 的样子如下:

      me\Documents\2018\powershellFiles\toLoc
              \Credential
                     \Forms
                         file list   #the first time the files get copied without the dirs at this level

这是我的脚本:

function CopyFileToFolderUNC($SourcePath, $DestinationPath){
         Copy-Item -Path $SourcePath/* -Destination $DestinationPath #Copy-Item -Path source -Destination target  -Recurse -Force 
}


#################start here##################################

$tempSource = @("\\DRIVE01\Svcs\Credentialing\FORMS") #eventually will have list of more than one here
$ToLocation = "C:\Users\me\Documents\2018 \powershellFiles\toLoc\Credentialing\FORMS\"  #this will eventually be array with multiple in it

for($i=0; $i -lt ($tempSource.Length); $i++) {
   CopyFileToFolderUNC $tempSource[$i] $ToLocation
}

在我从 foreach 切换到 for 循环之前,我认为它适用于 toLoc 中的子目录。我需要一个 for 循环,因为它可以更轻松地处理接下来的源和目标目录字符串的数组。

答案1

我不得不使用 robocopy。

robocopy c:\fold1 c:\fold2 /s

相关内容