我目前有一个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()
}