param( [Parameter(Mandatory=$true)] [string]$url ) function Write-Log($msg) { Write-Host $msg -foregroundcolor green ($msg) | Out-File "log-remove-old-versions.txt" -Append } function Get-Web($webs, $title) { foreach ($web in $webs) { if ($web.Title -eq $title) { return $web } } return $null } function Get-Doclib($lists, $title) { foreach ($list in $lists) { if ($list.Title -eq $title) { return $list } } return $null } function Cleanup-Doclib($web, $doclib) { foreach ($item in $doclib.Items) { $currentVersionsCount = $item.Versions.Count Write-Log ($item.File.Name + "(" + $currentVersionsCount + " versions)") for($i=$currentVersionsCount-1;$i -ge 0;$i--) { if($item.Versions[$i].IsCurrentVersion){ Write-Log (" " + $i + " - current version") } else{ Write-Log (" " + $i + " - delete") $item.Versions[$i].Delete() } } } $doclib.EnableVersioning = $false $doclib.Update() } function Cleanup-Web($web) { Write-Log ($web.Url) $doclib = Get-Doclib $web.Lists "Tiedostot" if ($doclib -ne $null) { Cleanup-Doclib $web $doclib } } function Cleanup-Condo($web) { Write-Log ($web.Url) # cleanup condo itself Cleanup-Web $web # then cleanup condo sub sites $webAsukkaille = Get-Web $web.Webs "Asukkaille" if ($webAsukkaille -ne $null) { Cleanup-Web $webAsukkaille } $webOsakkaille = Get-Web $web.Webs "Osakkaille" if ($webOsakkaille -ne $null) { Cleanup-Web $webOsakkaille } $webHallitukselle = Get-Web $web.Webs "Hallitukselle" if ($webHallitukselle -ne $null) { Cleanup-Web $webHallitukselle } } function Cleanup-Pmc($site) { foreach ($web in $site.RootWeb.Webs) { Cleanup-Condo $web } } $wa = Get-SPWebApplication $url $first = $true foreach ($site in $wa.Sites) { if ($first) { Write-Log ("Skip first site collection " + $site.Url) $first = $false } Cleanup-Pmc $site }