2015-03-02 6 views
0

Так что я пытаюсь переместить SPListItem из списка в другой архив List. Вот мой кодSharePoint ListItem исчезает, переместив его в другой список, используя .MoveTo

$Query = New-Object Microsoft.SharePoint.SPQuery; 
$Query.Folder = $FolderToMoveFrom 

ForEach ($Item in $ItemList.GetItems($Query)) 
{ 
    $a = $web.Url; 
    $b = $FolderToMoveTo.Url; 
    $c = $a + "/" + $b; 
    $Name = $Item.Name; 
    write-host "Copy Item " $Name "to" $c; 

    $Web.GetFile($Item.Url).MoveTo([System.String]::format("{0}/{1}_.000",$FolderToMoveTo.Url,$Item.ID.ToString())); 
} 

Моя проблема

После запуска скрипта, элементы просто исчезает. Мой скрипт не генерирует исключение. Я думаю, проблема может заключаться в том, что список должен быть обновлен после добавления в него новых элементов. Но если я добавлю $Item.Update(); в ForEach, я получаю excpetion «Entry не существует» (что понятно, потому что я просто переместил Item).

Итак, мой вопрос в том, как правильно обновить список архивов, поэтому в моем списке показаны элементы, которые я только что переместил?

ответ

0

Я недавно столкнулся с той же проблемой. Я не думаю, что вы включили ваш полный фрагмент кода, поскольку неясно, откуда приходит FolderToMoveTo (другой список?), Но так как у меня были подобные симптомы (элементы списка исчезали при использовании MoveTo), я решил, что отправлю свой опыт и решение в случае, если оно помогает кому-либо еще или заставляет других замечать и публиковать лучшие решения.

У меня есть собственный список с тысячами элементов списка, организованных в папки. Однако для целей отчетности пользователи в конечном итоге создают плоские представления и фильтруют столбцы поиска, поэтому организация в папки не помогает обойти порог элемента списка для этих отчетов. Я хотел архивировать элементы списка, отвечающие определенным критериям (в моем случае они уже были организованы во вложенные папки/Тема/Год, поэтому я решил написать несколько PowerShell для итерации в коллекции SPList.Folders из списка источников и, для тестирования, перемещения любая папка с именем «2013» в ту же структуру папок в целевом списке.

This blog post в конечном итоге привело меня к решению. Когда я попытался использовать MoveTo для перемещения элемента из исходного списка в целевой список, элемент исчез (потерял сирот? Я не мог найти его даже с помощью SPM). В итоге мне пришлось создать новый элемент в целевом списке, скопировать все доступные для записи значения поля из исходного элемента и вызвать $ item.Update(), переместить новый элемент в нужное место с MoveTo (без обновления, SystemUpdate или любой другой вызов, требуемый для этого), а затем удалить исходный элемент.

Сообщите мне, если код образца поможет, но я думаю, что ссылка выше должна покрыть все это. Все они принадлежат автору блога, Стиану Киркебергу и источникам, на которые он ссылается. Я просто увеличиваю экспозицию, так как я нашел этот вопрос на SO, прежде чем найти его решение.

 Смежные вопросы

  • Нет связанных вопросов^_^