SharePointCommunity
Die deutschsprachige Community für SharePoint, Office 365 und mit Azure

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

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

Ohne Rang
2 Beiträge
wauwau erstellt in 9 Sep 2009 11:39

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

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

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

Seite 1 von 1 (3 Elemente) | RSS