113 lines
2.2 KiB
PowerShell
113 lines
2.2 KiB
PowerShell
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
|
|
}
|