過去3〜4か月間(テストと製品の両方で)PowerShellスクリプトがスケジュールされ、正常に実行されました。スクリプトの目的は、特定のトリガーが外部システムから起動されたときにSharePointのドキュメントプロパティを更新することです。詳細に立ち入ることなく、レコードとして宣言されたドキュメントのアイテムプロパティを更新するために使用されたコードを以下に示します。
$recordsmanagement=[Microsoft.Office.RecordsManagement.RecordsRepository.Records]
$recordsmanagement::UndeclareItemAsRecord($item)
$item = $list.GetItemById($item.id)
$item.File.CheckOut()
$item[$sSpFieldName]=$sDbValue
$item.Update()
$item = $list.GetItemById($item.id)
$item.File.CheckIn("")
$recordsmanagement::DeclareItemAsRecord($item)
このコードは何百回も問題なく機能しています。何らかの理由で、このコードは1週間前に最後の行で爆撃を開始しました(レコードとして再宣言する場合)。
System.Management.Automation.MethodInvocationException: Exception calling "DeclareItemAsRecord" with "1" argument(s): "The file /lib/folder/file.pdf has been modified by SHAREPOINT\system on 10 Oct 2012 00:00:47 -0500."
他の奇妙な部分は、これがProdでのみ発生していることです。テスト環境は問題なく実行されているようです。まだ本番環境の修正を試していませんが、GetItemById(チェックイン後)を使用して$itemオブジェクトを再度取得できると確信しています。最初に他の人の視点を取得したかったので、私はまだこれを行うのを少しためらっています。
誰かがこれについて何か意見がありますか?前もって感謝します。