SharePoint 2013 — Удаляем все элементы списка

imageВ ходе экспериментов со списками SharePoint 2013, например когда тестируется массовая загрузка элементов списка, может возникнуть необходимость в очистке списка. Пример скрипта PowerShell для непосредственного удаления всех элементов какого либо списка:

$url = "http://site1.holding.com"
$listName = "Test"
#
$snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'}
if ($snapin -eq $null) {
  Write-Host "Загрузка оснастки SharePoint Powershell"
  Add-PSSnapin "Microsoft.SharePoint.Powershell"
}
#
$web = Get-SPWeb $url 
$list = $web.Lists[$listName]
#
# Удаляем папки 
#
$collFolders = $list.Folders
$count = $collFolders.Count - 1
for($i = $count; $i -gt -1; $i--)
{       
  $collFolders.Delete($i)
}
#
# Удаляем элементы списка
#
$items = $list.GetItems()
$items | ForEach-Object{
  $list.GetItemById($_.Id).Delete()
}
$list.Update()
$web.Dispose()
Write-Host 'Удаление завершено'

Всего комментариев: 3 Комментировать

  1. Valdemar Miller /

    Добрый день!
    А как быть, если необходимо почистить библиотеку? Если я пишу имя библиотеки вместо списка, то выдает ошибку:
    You cannot call a method on a null-valued expression.
    At C:\del_all.ps1:28 char:1
    + $list.Update()
    + ~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    И можно ли в скрипте прописать несколько списков\библиотек, чтобы полностью почистить их одним скриптом?
    Заранее благодарю за ответ

    1. Алексей Максимов / Автор записи

      …то выдает ошибку:

      Судя по ошибке в Вашем случае значение переменной $list является null, то есть не содержит ссылки на библиотеку как объект. То есть похоже на то, что вы написали что-то не то в переменные $url и/или $listName в начале скрипта. После того, как в консоли PowerShell появляется эта ошибка, посмотрите значение переменной $list. Оно не должно быть пустое.

      И можно ли в скрипте прописать несколько списковбиблиотек, чтобы полностью почистить их одним скриптом?

      В текущем варианте нельзя. Для этого надо расширять скрипт, добавив в него например обработку входящих параметров и удаление в цикле обработки этих параметров.

  2. Алексей Максимов / Автор записи

    Если у Вас остаются вопросы по выполнению скрипта в Вашем конкретном случае, то предлагаю перенести это обсуждение в форум http://forum.it-kb.ru/viewforum.php?f=37

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