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

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Grosse Dokumentenbibliothek: Inhalt (alle Dokumente klschen)

Unbeantwortet Dieser Beitrag hat 2 Antworten

Ohne Rang
159 Beiträge
thunderstorm erstellt 21 Apr. 2015 08:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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

Ohne Rang
31 Beiträge
DaBus Als Antwort am 22 Apr. 2015 22:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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()
Ohne Rang
159 Beiträge
thunderstorm Als Antwort am 23 Apr. 2015 06:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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
. . .