Удаление элементов списка SharePoint с помощью PowerShell
Удаление элементов списка SharePoint с помощью PowerShell
Всем привет.
Есть задача - удалить все элементы списка, подходящие под условие. Список состоит из элементов. У каждого элемента 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()
Помогите, кто чем может)
Есть задача - удалить все элементы списка, подходящие под условие. Список состоит из элементов. У каждого элемента 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
- Сообщения: 4
- Зарегистрирован: 23 ноя 2016 09:35
Re: Удаление элементов списка SharePoint с помощью PowerShell
в цикле "удаление" оберните в условие что-то типа этого:
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()
}
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()
}
Re: Удаление элементов списка SharePoint с помощью PowerShell
К сожалению, я не в силах преобразовать ваше условие сразу в мой скрипт, т.к. не обладаю такими знаниями. Не могли бы вы помочь мне это сделать? Я так понимаю, что нужно либо в моём первом скрипте убрать блок $caml вообще, либо обернуть ваше предложенное условие по правилам $caml ?
Как будет выглядеть окончательный вариант?
Как будет выглядеть окончательный вариант?
Re: Удаление элементов списка SharePoint с помощью PowerShell
Удалось решить таким способом.
$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()
}
}
$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()
}
}