Question

ひろば2 on Tue, 03 Sep 2013 06:13:56


経験者の方々、下記内容についてご教示いただけないでしょうか。
宜しくお願いいたします。

--------------------------------------------------

リストより特定アイテムを
ProcessBatchDataメソッドを用いて削除したいと思っています。

下記URLページのサンプルコードを参考にPowershellにて作成しているのですが、
上記のメソッド実行後にゴミ箱に移された特定アイテムを削除する事ができません。

http://sharepoint.stackexchange.com/questions/26542/deleting-all-the-items-from-a-large-list-in-sharepoint

いろいろ調べてみた結果、削除前のアイテムGUIDがゴミ箱に移されると
異なるGUIDに変更されている為と判明いたしました。

ProcessBatchDataメソッドによる削除後、deleteAll()メソッドを使わず、
ゴミ箱から特定アイテムのみを完全削除を行う術があれば、お教えください。


Sponsored



Replies

OTA Hirofumi on Wed, 04 Sep 2013 01:43:38


バッチでDELETEを行うと、どうしてもゴミ箱を経由してしまいますよね。
ゴミ箱のアイテムは、SPRecycleBinItem クラスで操作をすることができます。
また、お調べ頂いた通り、このアイテムのIDプロパティ(GUID)は元のアイテムのIDプロパティとは一致しません。

では、どうするか?ですが、ひとつは地道にゴミ箱内のアイテムを走査して、条件一致(削除元のロケーション等)したものを削除していく方法。
※ゴミ箱内のアイテム走査は下記にサンプルがありました。
http://www.sharepointdiary.com/2013/02/search-recycle-bin-sprecyclebinquery.html

もうひとつは、ProcessBatchDataメソッドを実行する前後に、ゴミ箱を無効化、有効化するという方法が考えられます。
キチンとした動作確認はできていないのですが、ゴミ箱が無効化されている状態では、バッチ実行時にゴミ箱を経由せずに消えると思います。
イメージとしては、下記のような感じですね。

$site.WebApplication.RecycleBinEnabled = $false $web.ProcessBatchData(batchString)
$site.WebApplication.RecycleBinEnabled = $true

ただ、一時的にゴミ箱が無効になりますので、影響範囲は広いですね…。
となりと、やはりゴミ箱内のアイテムを地道に消していく方法が良いでしょうか?


ひろば2 on Wed, 04 Sep 2013 04:49:54


OTA Hirofumi様

お忙しいところ、ご返信ありがとうございます。

やはり、ゴミ箱内を走査していくしかないのですね。
確かにゴミ箱の有効/無効は少々危険な気もいたしますので、
地道にゴミ箱内走査による削除方法を検証してみます。

星 睦美 on Wed, 04 Sep 2013 06:26:11


フォーラム オペレーターの星 睦美です。
ひろば2 さん、こんにちは

OTA Hirofumi さんからの情報が参考になったようですね。
今回は私のほうで[回答の候補に設定] させていただきました。

フォーラムでは参考情報の共有と回答者へのお礼として、役立つ回答には投稿者から[回答としてマーク] をお願いしています。

---

私のほうでOTA Hirofumi さんからの返信がフォーラムに役立つ内容だと思いますので[回答としてマーク]しました。(9月10日)

今後ともMSDN フォーラムをお役立てください。


フォーラム オペレーター 星 睦美 - MSDN Community Support