SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Grosse Dokumentenbibliothek: Inhalt (alle Dokumente klschen)

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 2 Antworten | 2 Followers

Top-75-Beitragsschreiber
158 Beiträge
thunderstorm erstellt in 21 Apr 2015 8:25

Wir machen den Upgrade auf SP2013. Dabei habe ich Listen im SP gefunden die über 30'000 Docx Files haben.

Wie kann man diese in einem Rutsch löschen? Gibt es da einen Command dafür? Habe einiges gefunden, das sind aber Batch files die einigermassen gross sind und die ich nicht im ganzen verstehe (eines unten dran.).

Kann man das untenstehende Script verwenden und dann den Command ....

Get-SPList http:mysite MyList   ausführen?

Batch - Remove many items in list:

function Get-SPList($webUrl, $lstUrl)
{
    $webObj = Get-SPWeb -identity $webUrl
    $lstObj = $webObj.GetList($lstUrl);
    return $lstObj
}
$spList = Get-SPList -webUrl "http://mysitecollecton/MySite" -lstUrl "http://mysitecollecton/MySite/Lists/EmpInfo"
$spQuery = new-object Microsoft.SharePoint.SPQuery
 $camlQuery =
 "<Where>
   <Eq>
    <FieldRef Name='Department' />
      <Value Type='Text'>HR</Value>
   </Eq>
 </Where>"
$spQuery.Query = $camlQuery
$spQuery.RowLimit = 100
 $spListItemCollection = $spList.GetItems($spQuery)
 
  # Create batch remove CAML query
  $batchRemove = '<?xml version="1.0" encoding="UTF-8"?><Batch>';
 
  # The command is used for each list item retrieved
  $command = '<Method><SetList Scope="Request">' +
  $spList.ID +'</SetList><SetVar Name="ID">{0}</SetVar>' +
  '<SetVar Name="Cmd">Delete</SetVar></Method>';
 
  foreach ($item in $spListItemCollection)
  {
 
     $batchRemove += $command -f $item.Id;
  }
  $batchRemove += "</Batch>";
 
  # Remove the list items using the batch command
  $spList.ParentWeb.ProcessBatchData($batchRemove) | Out-Null

 

 

Alle Antworten

Top-500-Beitragsschreiber
31 Beiträge

Das von dir gepostete Script brauchst du nur in einer Powershell ausführen, nachdem du die URL zur Liste/Bibliothek (http://mysitecollecton/MySite/Lists/EmpInfo) angepasst hast.

Das Script baut eine Batch auf und löscht damit alle enthaltenen Dokumente wo in der Spalte "Department" HR steht. Brauchst du die leere Bibliothek noch? Sonst wäre es sicherlich schneller, die gesamte Bibliothek zu löschen. Geht einfach nur schneller. Ansonsten ist die Batch der beste Weg und sollte dich zum Ziel führen. Die sind dann aber wirklich weg... kein Papierkorb oder so.. nichts wichtiges dabei das migriert werden muss zu SP2013?

Um alle Items zu löschen kannst du die Query entfernen:

$spQuery = new-object Microsoft.SharePoint.SPQuery
$camlQuery =
"<Where>
   
<Eq>
    
<FieldRef Name='Department' />
      
<Value Type='Text'>HR</Value>
   
</Eq>
 </Where>"

$spQuery.Query = $camlQuery   
$spQuery.RowLimit = 100
 $spListItemCollection = $spList.GetItems($spQuery)
ändern zu
 $spListItemCollection = $spList.GetItems()
Top-75-Beitragsschreiber
158 Beiträge

Hallo Daniel,

Danke für Deine Antwort.

Ja die Bibiothek brauche ich noch. Da rein werden DOCX geliefert und als PDF konvertiert. Leider ist danach irgendwann die Anzahl zu gross. Muss mir nun etwas überlegen dass täglich, wöchentl oder monatlich die Bibiothek kontrolliert, die neuesten 200 docx drin lässt, den Rest löscht.

Also kann ich folgendes löschen?

$spQuery = new-object Microsoft.SharePoint.SPQuery
$camlQuery =
"<Where>
   
<Eq>
    
<FieldRef Name='Department' />
      
<Value Type='Text'>HR</Value>
   
</Eq>
 </Where>"

 

$spQuery.Query = $camlQuery   
$spQuery.RowLimit = 100
. . .
Seite 1 von 1 (3 Elemente) | RSS