Powershell Copy-Item:无法将容器复制到现有叶项上

Powershell Copy-Item:无法将容器复制到现有叶项上

我有一个 Powershell 脚本,其中有一行如下所示:

Copy-Item \\[machine 1]\[path 1]\[directory 1]\ \\[machine 2]\[path 2]\ -recurse

当我的脚本执行到这一行时,出现以下错误:

Copy-Item : Container cannot be copied onto existing leaf item.
At C:\[script path]\[script name]:[line] char:5
+     Copy-Item \\[machine 1]\[path 1]\[directory 1]\ \\[machine 2] ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (\\[machine 1]\[path 1]\[directory 1]:String) [Copy-Item], PSArgumentException
    + FullyQualifiedErrorId : CopyContainerItemToLeafError,Microsoft.PowerShell.Commands.CopyItemCommand

我找到了一个解决方法,即在 [路径 2] 下新建 [目录 1],创建 Copy-Item 将用内容填充的根目录,但这会导致另一个问题,即 Copy-Item 抱怨路径已经存在,尽管文件复制实际上成功了。Copy-Item 被宣传为一种“有效”的解决方案。我认为我的解决方法没有必要。文档的哪一部分会表明不是这样?为什么会发生这种情况?我的问题的最佳解决方案是什么?

答案1

问题的根本原因是目标不存在。如果您查看错误日志中的上游,您将看到该消息。您需要创建目标文件夹:

if (-Not (Test-Path \\[machine 2]\[path 2]))
{
     md -path \\[machine 2]\[path 2]
}

Copy-Item \\[machine 1]\[path 1]\[directory 1]\ \\[machine 2]\[path 2]\ -recurse

相关内容