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.




Löschen von allen alten Versionen von Elementen einer Documentenbibliothek per powershell

Unbeantwortet Dieser Beitrag hat 2 Antworten

Ohne Rang
2 Beiträge
wauwau erstellt 9 Sept. 2009 11:39
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habe ein Script geschrieben, für die Wartung von Dokumentenbibliotheken mit Versionierung.

Dieses PS-Script löscht alle Versionen die älter als ein Anzahl von Tagen ist, behält aber je Dokument mindestens die letzten anzugebende Anzahl von Versionen.

Ist ganz hübsch, wenn man Datenbankserver zusammenräumen will.....

 

************************

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")


$DaysOlderThan = 0 # Versions older than these number of days should be deleted
$SiteCollection = "http://intranet"
$SubSite = "akd"
$DocLibrary = "test"
$KeepVersions = 3 # Minimum Number of latest Versions to keep

$site = new-Object Microsoft.Sharepoint.SpSite($SiteCollection)
$web = $site.OpenWeb($SubSite)
$list = $web.Lists[$DocLibrary]

$FromDate = [Microsoft.Sharepoint.Utilities.SPUtility]::CreateISO8601DateTimeFromSystemDateTime([System.DateTime]::UTCNow.AddDays($DaysOlderThan))


foreach ($fl in $list.Items)
{
$cv = $fl.Versions[0].VersionId/512

if ($cv -gt $KeepVersions)
{
for($i=$fl.Versions.Count-$KeepVersions-1;$i -ge 0;)
{
$CrDate = [Microsoft.Sharepoint.Utilities.SPUtility]::CreateISO8601DateTimeFromSystemDateTime($fl.versions[$i].Created.Date)

if ($CrDate -lt $FromDate)
{
$fl.file.Versions[$i].Delete()
}
$i=$i-1;

}
}
}

$web.Dispose()
$site.Dispose()

Alle Antworten

Ohne Rang
2 Beiträge
wauwau Als Antwort am 9 Sept. 2009 11:42
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Korrektur

 

 

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")


$DaysOlderThan =  30 # Versions older than these number of days should be deleted
$SiteCollection = "http://sharepoint.domain.com"
$SubSite = "subsitename"
$DocLibrary = "doclibrary name"
$KeepVersions = 3 # Minimum Number of latest Versions to keep

$site = new-Object Microsoft.Sharepoint.SpSite($SiteCollection)
$web = $site.OpenWeb($SubSite)
$list = $web.Lists[$DocLibrary]

$FromDate = [Microsoft.Sharepoint.Utilities.SPUtility]::CreateISO8601DateTimeFromSystemDateTime([System.DateTime]::UTCNow.AddDays(-$DaysOlderThan))


foreach ($fl in $list.Items)
{
$cv = $fl.Versions[0].VersionId/512

if ($cv -gt $KeepVersions)
{
for($i=$fl.Versions.Count-$KeepVersions-1;$i -ge 0;)
{
$CrDate = [Microsoft.Sharepoint.Utilities.SPUtility]::CreateISO8601DateTimeFromSystemDateTime($fl.versions[$i].Created.Date)

if ($CrDate -lt $FromDate)
{
$fl.file.Versions[$i].Delete()
}
$i=$i-1;

}
}
}

$web.Dispose()
$site.Dispose()

Ohne Rang
1 Beiträge
Daniel Als Antwort am 12 Juli 2010 09:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

das Script ist genau das wonach ich schon lange gesucht habe. Nur leider funktioniert es nicht, bzw alle Versionen sind nach der Ausführung immer noch vorhanden.

$DaysOlderThan =  1 # Versions older than these number of days should be deleted
$SiteCollection = "http://localhost"
$SubSite = "Docs"
$DocLibrary = "Dokumente"
$KeepVersions = 1 # Minimum Number of latest Versions to keep

Gruß Daniel