Удаление элементов старше N дней из списка SharePoint

Удаление старых элементов

Другого варианта не нашел. Только через CAML-запрос.

Add-PSSnapin Microsoft.SharePoint.PowerShell
 
$w = Get-SPWeb http://myportal/test
$list = $w.Lists["removeolditems"]
$query = New-Object Microsoft.SharePoint.SPQuery;
$query.ViewAttributes = "Scope='Recursive'";
$query.RowLimit = 1000;

$createdOnInternalFieldName = 'Created'
$caml = '<Where><Leq><FieldRef Name="{0}" /><Value Type="DateTime"><Today OffsetDays="-1" /></Value></Leq></Where>'-f $createdOnInternalFieldName
$query.Query = $caml

$cmdFormat = "  <Method ID=`"Del{0}`">
    <SetList Scope=`"Request`">"  + $list.ID + "</SetList>`
    <SetVar Name=`"Cmd`">Delete</SetVar>`
    <SetVar Name=`"ID`">{0}</SetVar>`
  </Method>`r`n"
$len = 0;
do {
    $listItems = $list.GetItems($query)
    $len = $listItems.Count
    if($len -gt 0){
        $cmdString = "<?xml version=`"1.0`" encoding=`"UTF-8`"?>`r`n<Batch OnError=`"Continue`">`r`n"

        $listItems|%{ $cmdString += [string]::Format($cmdFormat, $_.ID) }
        $cmdString += "</Batch>`r`n"

        [Void]$w.ProcessBatchData($cmdString)
        Write-Host "Удалено $($len) элементов"
    }
} while($len -gt 0)

Честно сперто из ответа Pawel Madziar отсюда.

Вся суть заключается в подмене адреса веб-сайта и имени списка. Проверил. Работает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.