2017-09-04 126 views
0

我目前有一个SharePoint 2013环境,从一年左右的时间从SharePoint 2010升级..某些文档库的版本控制设置为无限制版本,并且消耗了大量额外空间一些文件库大约30GB)。我决定删除版本回到5(5个最新版本)。通过Powershell删除Sharepoint版本控制

下面的脚本已经取得了一些成功 - 并且在多个文档库上运行时,它已经删除了版本控制,但是在同一个文档库中的文件上版本尚未被删除。

实施例: 之前运行脚本 文件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() 
     } 
     } 
     } 

我不确定这是为什么 - 如果其他人以前有过这些问题?

+0

难道你不能只将库的限制设置为5个版本,然后遍历库并使用powershell脚本更新每个项目?那么所有版本都应该清除,或? –

+0

@dns_nx听起来像它会工作,PowerShell脚本上的任何想法循环通过文档库? – MattG

+0

是的,请看我的答案。 –

回答

0

好的,这里是我认为的解决方案。 将文档库版本限制设置为5,然后遍历该库并使用powershell脚本更新每个项目。

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