无法创建SPFolder层次结构。 .Update()不断抛出异常

时间:2017-03-24 13:43:31

标签: powershell sharepoint sharepoint-2010

我正在尝试将一个文档库的文件夹结构复制到另一个文档库

这总是失败,例外:

  

更新:使用“0”参数调用“Update”的异常:“Dieser   Vorgang kannnurfüreineDateiususgeführtwerden。北   “http://machine/CopyTest2/EUR/Germany”handelt es sich um einen   Ordner“。

免费翻译:

  

更新:使用“0”参数调用“Update”的异常:“此操作   只能为文件调用。 “http://machine/CopyTest2/EUR/Germany”是一个文件夹。“

这是我目前正在使用的代码:

foreach ($Folder in $AllFolders) {
    $ParentFolderURL = ""
    $i = 1 #Set 1 so we ignore the first part of the url, which is the library name. we only want the folders
    $FolderURL = $Folder.url.Split("/")

    while ($i -lt ($FolderURL.count - 1)) {
        $ParentFolderURL = "$ParentFolderURL/" + $FolderURL[$i]
        $i++
    }
    # Targetfolder is now http://server/copytest1/EUR
    $targetFolderUrl = "$($DestinationWebURL)/$($dList.Title)$($ParentFolderURL)"
    #check if the folder exists by querying web.GetFolder($targetFolderUrl) and check if it is null or not

    if (!($dWeb.GetFolder($targetFolderUrl)).Exists) {
        $NewFolder = $dlist.Folders.Add($targetFolderUrl, [Microsoft.SharePoint.SPFileSystemObjectType]::Folder, $Folder.Name)
        $NewFolder["Title"] = $Folder.Name
        $NewFolder.Update()
    }
    else {
        #If the folder already exists, retrieve the folder where the file will be created
        $NewFolder = $dList.Folders | Where-Object {$_.name -eq $Folder.Name}
    }
    #...
}

我很确定这条错误的路线 $NewFolder = $dlist.Folders.Add($targetFolderUrl, [Microsoft.SharePoint.SPFileSystemObjectType]::Folder, $Folder.Name)但我无法弄清楚相对网址的正确值是什么。

我尝试过的替代方案,其中包含相对网址的组合:

$NewFolder = $dlist.Folders.Add("/$($dList.Title)$($ParentFolderURL)", [Microsoft.SharePoint.SPFileSystemObjectType]::Folder, $Folder.Name)
$NewFolder = $dlist.Folders.Add($ParentFolderURL, [Microsoft.SharePoint.SPFileSystemObjectType]::Folder, $Folder.Name)

但没有一个可行。

1 个答案:

答案 0 :(得分:1)

好的。一如既往:PEBCAK

如果INNER JOIN为空,

SELECT COUNT(*) as admin_replied FROM first_table INNER JOIN second_table ON first_table.trackid = second_table.trackid WHERE user_id=".$_SESSION['user_id']." AND `read` = 0"; 指向列表本身。此外,文件夹名称本身也丢失了。错误的逻辑从那里逐渐落下。

$targetFolderUrl

正如我的问题所述,relativeUrl参数也是错误的:

$ParentFolderUrl

这两项更改纠正了我的错误,现在几乎立即创建了完整的层次结构。