通过PowerShell删除SharePoint版本控制



我目前有一个SharePoint 2013环境,该环境一年左右从SharePoint 2010升级。空间(在30GB左右的某些文档库上)。我决定将版本删除为5个(5个最新版本)。

以下脚本取得了成功 - 并且在多个文档库上运行时,它具有删除版本的操作,但是在同一文档库中的文件上,该版本尚未删除。

示例:在运行脚本之前文件1 =有100个版本文件2 =有100个版本

运行脚本后文件1 =有5个版本文件2 =有100个版本

    $SPweb = Get-SPweb "xxxxx"      ##EDIT AND PUT THE WEB ADDRESS HERE##
    $versionsToKeep =5; ##NUMBER OF VERSIONS TO KEEP##
    $SPlist = $SPweb.Lists["Document Library"]      ##THE DOC LIBRARY##
    foreach ($SPitem in $SPlist.Items)
        {
    $currentVersionsCount= $SPItem.Versions.count
        if($currentVersionsCount -gt $versionstoKeep)
        {
    for($i=$currentVersionsCount-1; $i -ge $versionstoKeep; $i--)
        {
    $SPItem.versions[$i].delete()
        }
        }
        }

我不确定为什么会这样 - 如果其他人之前遇到过这些问题?

好吧,这是我认为的解决方案。将文档库版本限制为5,然后通过库循环并使用PowerShell脚本更新每个项目。

$web = Get-spweb http://yourweb/sites/path
$list = $web.Lists["Document Library"]
ForEach( $file in $list.Items ) { 
    $file.Update() 
}

最新更新