2015-03-02 54 views
0

所以即時嘗試將SPListItem從列表移動到另一個存檔列表。 這裏是我的代碼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())); 
} 

我的問題

運行該腳本後,項目就這樣消失。我的腳本不會拋出異常。我認爲問題可能是,在添加新項目之後,列表必須更新。但是,如果我在ForEach中添加$Item.Update();,我會得到「Entry不存在」的提示(這是可以理解的,因爲我只是移動了Item)。

所以我的問題是,我如何正確地更新存檔列表,所以我的列表顯示我剛纔移動的項目?

回答

0

我最近遇到了同樣的問題。由於不清楚FolderToMoveTo來自哪裏(不同的列表?),我不認爲你包含了完整的代碼片段,但由於我遇到了類似的症狀(使用MoveTo時列表項消失),我想我會發布我的經驗並提供解決方案,以幫助其他人或讓其他人注意併發布更好的解決方案。

我有一個自定義列表,其中有數以千計的列表項目組織到文件夾中。但是,出於報告目的,用戶最終會在查找列上創建平面視圖和過濾,因此組織到文件夾無法繞過這些報告的列表項閾值。我想存檔滿足特定條件的列表項(在我的情況下,它們已經組織到子文件夾/主題/年),所以我決定編寫一些PowerShell來遍歷源列表的SPList.Folders集合,並且爲了測試,移動名爲「2013」​​到目標列表中的相同的文件夾結構

This blog post任何文件夾。最終導致我的解決方案。當我試圖用通過MoveTo該項目從源列表移動到目標列表中的項目消失(孤兒?我似乎無法找到它甚至與SPM)我最終不得不在目標列表中創建一個新項目,從源項目中複製所有可寫入的字段值,並調用$ item.Update(),移動使用MoveTo(無更新,系統更新或任何其他所需的呼叫)將新項目放入正確的位置,然後刪除源項目。

讓我知道如果代碼示例會有所幫助,但我認爲上面的鏈接應該覆蓋這一切。博客作者Stian Kirkeberg以及他所提到的消息來源都得分。自從我在找到他的解決方案之前在SO上發現此問題後,我只是增加了曝光度。

相關問題