Удаление элементов списка SharePoint с помощью PowerShell

Ответить
Аватара пользователя
Kire Law
Сообщения: 3
Зарегистрирован: 06 фев 2020 18:32
Контактная информация:

Удаление элементов списка SharePoint с помощью PowerShell

Сообщение Kire Law » 06 фев 2020 19:04

Всем привет.

Есть задача - удалить все элементы списка, подходящие под условие. Список состоит из элементов. У каждого элемента 10 столбцов. Условие: нужно удалить все элементы, в которых 1, 3, 5, 6 и 8 столбцы пустые (не имеют значения или NULL).

Есть пример скрипта, но в котором указано условие удаления по дате создания.

site = new-object Microsoft.SharePoint.SPSite("http://sitecollectionURL")
$web = $site.rootweb
$list = $web.Lists["Name of the List"]
$caml="<Where>
<Leq>
<FieldRef Name="Created" />
<Value IncludeTimeValue="TRUE" Type="DateTime">2011-12-31T02:32:20Z</Value>
</Leq>
</Where>"
$query=new-object Microsoft.SharePoint.SPQuery
$query.Query=$caml | Write-Output
$items=$list.GetItems($query)
$listItemsTotal = $items.Count;
for($x=$listItemsTotal-1;$x -ge 0; $x--)
{
$items[$x].Delete()
}
$web.Dispose()
$site.Dispose()

Помогите, кто чем может)

Аватара пользователя
Vladimir Zemlyakov
Сообщения: 2
Зарегистрирован: 23 ноя 2016 09:35

Re: Удаление элементов списка SharePoint с помощью PowerShell

Сообщение Vladimir Zemlyakov » 07 фев 2020 05:51

в цикле "удаление" оберните в условие что-то типа этого:

if ($items[$x][1] -eq $null -or $items[$x][3] -eq $null -or $items[$x][5] -eq $null -or $items[$x][6] -eq $null -or $items[$x][8] -eq $null)
{
$items[$x].Delete()
}

Аватара пользователя
Kire Law
Сообщения: 3
Зарегистрирован: 06 фев 2020 18:32
Контактная информация:

Re: Удаление элементов списка SharePoint с помощью PowerShell

Сообщение Kire Law » 07 фев 2020 12:29

К сожалению, я не в силах преобразовать ваше условие сразу в мой скрипт, т.к. не обладаю такими знаниями. Не могли бы вы помочь мне это сделать? Я так понимаю, что нужно либо в моём первом скрипте убрать блок $caml вообще, либо обернуть ваше предложенное условие по правилам $caml ?

Как будет выглядеть окончательный вариант?

Аватара пользователя
Kire Law
Сообщения: 3
Зарегистрирован: 06 фев 2020 18:32
Контактная информация:

Re: Удаление элементов списка SharePoint с помощью PowerShell

Сообщение Kire Law » 07 фев 2020 15:42

Удалось решить таким способом.

$web = get-spweb http://вашсайт
$list = $web.lists | where {$_.title -eq "имясписка"}

Write-host "List $($list.title) has $($list.items.count) entries"

$listItems = $list.Items
$listItemsTotal = $listItems.Count

for ($x=$listItemsTotal-1;$x -ge 0; $x--)
{
if($listItems[$x]['столбец1'] -eq '0' -and $listItems[$x]['столбец2'] -eq '0' -and $listItems[$x]['столбец3'] -eq '0' -and $listItems[$x]['столбец4'] -eq '0' -and $listItems[$x]['столбец5'] -eq '0')
{
Write-Host("DELETED: " + $listItems[$x].name)
$listItems[$x].Delete()
}
}

Ответить

Вернуться в «SharePoint Server»