Copy-PnPFile返回找不到文件

时间:2019-07-12 06:49:43

标签: powershell sharepoint migration

我正在编写一个PowerShell脚本,该脚本将所有文件从一个文档库复制到SharePoint Online中的另一个文件库。

我无法理解这种行为。

当我复制整个文件夹时,所有文件都将被复制并且可以正常工作:

Copy-PnPFile -SourceUrl "Old Library/" -TargetUrl "NewLibrary/"

但这对我没有帮助,因为我需要记录每个文件,而我不能这样做。所以我需要分别复制每个文件。

分别复制文件时,出现错误消息“找不到文件”:

Copy-PnPFile -SourceUrl "Old Library/item.docx" -TargetUrl "NewLibrary/item.docx"

我已经尝试使用其他路径:

  • 相对于站点
  • 相对于根
  • 完整域

任何人都知道可能是什么问题? 如何复制文件并记录单个文件(名称,路径,成功)?

2 个答案:

答案 0 :(得分:1)

Copy-PnPFile cmdlet无法正常工作,并且PnP PowerShell GitHub存储库中出现了问题。

这已经进行了大约一个月,但是应该在不久后引入修复程序。

https://github.com/SharePoint/PnP-PowerShell/issues/2103

答案 1 :(得分:0)

我也遇到了同样的问题,发现只有一种可行的方法可以通过Copy-PnPFile在同一租户中跨网站集复制文件:复制整个根文件夹:

Copy-PnPFile -SourceUrl Documents -TargetUrl /sites/otherproject/Documents -SkipSourceFolderName

但是,它也会尝试复制allitems.aspx。因此完整的解决方案是这样:

$error = $null
Copy-PnPFile -SourceUrl Documents -TargetUrl /sites/otherproject/Documents -SkipSourceFolderName -ErrorAction SilentlyContinue -ErrorVariable error
if ($error -and !$error.Exception.Message.ToLower().Contains("allitems.aspx")) {
    throw $error
}