Я пишу сценарий для копирования элементов из одного списка в другой на онлайн-сервере sharepoint. Я использую клиентскую объектную модель (CSOM) sharepoint 2013 года для написания этого сценария в PowerShell ISE. Это должно быть несложной задачей, но получается как раз обратное. Пока я могу получить все элементы с помощью camlquery, и я просто пытаюсь дублировать эти элементы и их вложения в другой список. Ошибка, которую я получаю, связана с попыткой создать attachmentCollection для извлечения всех вложений из любого элемента, вот часть сценария, которая представляет проблему:
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
$siteURL = "https://mysite.sharepoint.com"
$password = Read-Host -Prompt "Enter Password" -AsSecureString
$ctx = New-Object Microsoft.Sharepoint.Client.ClientContext($siteURL)
$credentials = New-Object Microsoft.Sharepoint.Client.SharepointOnlineCredentials("[email protected]", $password)
$ctx.Credentials = $credentials
#...Bunch of code that establishes/loads web/lists/items, all works fine
function CopyItem $itemToCopy
function CopyItem ($oldItem)
{
Write-Host "Copying item" $oldItem.ID
$newItemCI = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation
$newItem = $archList.AddItem($newItemCI)
$ctx.load($newItem)
#Update fields
$ctx.load($sourceList.Fields)
$ctx.ExecuteQuery()
foreach($field in $sourceList.Fields)
{
$newItem[$field.InternalName] = $oldItem[$field.InternalName]
}
$attachments = New-Object Microsoft.SharePoint.Client.AttachmentCollection #ERROR HERE
$attachments = $oldItem.AttachmentFiles
$ctx.load($attachments)
$newItem.AttachmentFiles.Add($attachments)
$newItem.Update()
$ctx.load($newItem)
$ctx.ExecuteQuery()
}
В сообщении об ошибке говорится: «Ошибка архива списка: с этим сообщением об ошибке: Конструктор не найден. Не удается найти соответствующий конструктор для типа Microsoft.SharePoint.Client.AttachmentCollection».
Я получаю ту же ошибку, если пытаюсь создать новый объект как вложение, не могу найти конструктор. Это странно, так как конструктор должен быть в client.dll, но не повезло. Я даже попытался восстановить свои файлы CSOM 2013 года, там никаких ошибок не обнаружено. Любая помощь по этому поводу приветствуется, спасибо.