Dokumentenversionen auflisten und löschen per PowerShell

Alle Dokumentenversionen einer Dokumentenbibliothek inklusive Dateigrößen per PowerShell anzeigen und löschen

Manchmal fällt es auf, dass die SharePoint-Seiten bzw. Dokumentenbibliotheken viel Speicherplatz belegen, obwohl die Summe der eigentlichen Dateien viel geringer ist.

Der Speicherplatzverbrauch ist evtl. durch verbrauchte Speicher-Quota oder durch das Betrachten der Speichermetriken (Websiteeinstellungen > Websitesammlungsverwaltung > Speichermetriken) aufgefallen.

Storage Metrics - Speichermetriken - _layouts-storman.aspx - SharePoint 2013

Die echten Dateigrößen kann man sich anzeigen lassen, indem man die Dokumentenbibliotheks- oder Dateieigenschaften im Windows-Explorer per WebDav-Protokoll öffnet.
(Dokumentenbibliothek im IE > Reiter „Bibliothek“ > „Mit Explorer öffnen“). SharePoint Bibliothek - Reiter BIBLIOTHEK - Menü lang - Mit Explorer öffnen Button - SharePoint 2013

Falls die in Speichermetriken angezeigten Datengrößen von den Tatsächlichen Dateigrößen abweichen, dann könnte es sein, dass die Speicherbelegung durch die Dokumentenversionen zustande kommt. Denn auch wenn nur geringe Änderungen in einem (großen) Dokument durchgeführt werden, wird (bei eingeschalteter Versionierung) jedes mal eine komplette Kopie dieser großen Datei erstellt.

Mehrere Probleme bei aktivierter Versionierung

Deaktivieren der Versionierung löscht die Versionen nicht

Nach dem Deaktivieren der Versionierung bzw. Begrenzung der Anzahl der Versionen werden bereits vorhandene Dokumentenversionen nicht gelöscht bzw. nicht bereinigt, somit wird der bereits belegte Speicher nicht freigegeben.

OneNote Versionen können nicht angezeigt/gelöscht werden

In unserem SharePoint 2013 System wird für OneNote-Notizbücher das Kontextmenü zum Anzeigen und Löschen der Versionen nicht angezeigt.

Die im SharePoint vorhandenen Versionen des OneNote-Dokumentes wurden nicht gelöscht, nachdem die Versionen im OneNote-Dokument selbst gelöscht und inklusive Papierkorb im Dokument deaktiviert wurden.

Skript für das Auflisten aller Dokumenten-Versionen und deren Datengröße innerhalb einer Dokumentenbibliothek

Dieses Skript wird alle Dokumente und deren Versionen einer Dokumentenbibliothek inklusive Speicherplatzbelegung und Dateigrössensummen als Tabelle und Liste ausgeben.

Das Skript am besten in einer PowerShell-ISE blockweise ausführen.

Das Skript zeigt alle Elemente der Dokumentenbibliothek (Listenelemente) und Anzahl der Versionen pro Listeneintrag.

Hinweis: OneNote-Notizbücher werden wie Ordner und OneNote-Abschnitte bzw. Reiter als einzelne Dateien mit eigenen Versionen behandelt.

Dokumentenbibliothek - Listenelemente - Versionen Anzahl - PowerShell

 

Dann werden die eigentlichen Dokumente (inklusive unter anderem Dateigröße, Anzahl der Versionen, Speicherplatzsumme der Versionen pro Dokument usw.) ausgegeben.

Am Ende der Tabelle wird die Dateigröße aller Dokumente der Dokumentenbibliothek (Dateigrössensumme) und der Speicherplatzverbrauch aller Versionen in der Dokumentenbibliothek ausgegeben.

 Dokumentenbibliothek - Tabelle - Dokumentenversionen - Dateigroesse, Anzahl Versionen, Dateisumme der Versionen - PowerShell

 

Am Ende des Skriptes werden die Dateien mit dazugehörigen Versionen als eine Liste ausgegeben und die Gesamtsumme der Dokumentenbibliothek (alle Dateien plus alle Versionen) ausgegeben.

Dokumentenbibliothek - Liste - Dokumentenversionen - Dateigroesse, Versionen - PowerShell

Dokumentenbibliothek - Liste - Dokumentenversionen - Dateigroesse, Versionen, Summe Dateien und Versionen - PowerShell

Erstellung der Versionen per PowerShell deaktivieren

Die Versionierung kann man entweder direkt im SharePoint deaktivieren: Dokumentenbibliothek > Reiter „Bibliothek“ > Bibliothekeinstellungen > „Versionsverwaltungseinstellungen

oder mit Hilfe des nachfolgenden Skriptes.

 

Versionsverwaltungseinstellungen - EnableVersioning - Disable Versioning - PowerShell Skript

Dokumentenbibliothek - Reiter Bibliothek - Bibliothekeinstellungen - Versionsverwaltungseinstellungen - Keine Versionskontrolle - SharePoint 2013

Alle Versionen in einer Dokumentenbibliothek löschen per PowerShell-Skript

Dieses Skript löscht alle Versionen aller Dokumente in einer Dokumentenbibliothek. Dabei ist es für das Skript irrelevant, ob die Versionierung in den „Versionsverwaltungseinstellungen“ aktiviert oder deaktiviert ist.

Wie immer gilt: Vorher immer ein Backup anfertigen!

Das Skript auch am besten in einer PowerShell-ISE blockweise ausführen.

 

Alle versionen in einer Dokumentenbibliothek löschen - PowerShell

Nun sind alle Versionen entfernt und nur noch die Dokumente selbst sind vorhanden.

 Dokumentenbibliothek - Listenelemente - Versionen Anzahl 1 - PowerShell

Dokumentenbibliothek - Tabelle - Dokumentenversionen - Dateigroesse, Anzahl Versionen, Dateisumme der Versionen 0 - PowerShell

Dokumentenbibliothek - Liste - Dokumentenversionen - Dateigroesse, Versionen - Nur Summe der Dateien geblieben - PowerShell

Links und Quellen