SharePoint自动化系列——Add/Remove “Hold” from items

简介: 转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 问题1: 1.如果SharePoint item被添加了hold,通过UI界面来对SharePoint items解锁是比较折腾的。

转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/

问题1:

1.如果SharePoint item被添加了hold,通过UI界面来对SharePoint items解锁是比较折腾的。

2.而且这其中存在一个问题,我们可以看作是已知问题——对于文件的解锁,是可以通过UI界面完成的;而对于list中的items,我们通过UI界面是无法完成解锁的,因为当你在item中上传附件并对其添加hold后,你是无法通过item的Property->Advanced再进入Compliance details中的,所以无法完成对item附件的解锁。

而对于以上的两个问题——解锁过程的繁琐和无法解锁,我们可以通过一个脚本来解决:

Add-PSSnapin Microsoft.SharePoint.PowerShell
function RemoveHolds($siteURL,$listTitle)
{
    $site = Get-SPSite $siteURL
    $web = $site.RootWeb
    $list = $web.Lists[$listTitle]
    $items = $list.Items
    $holds = $web.Lists["Holds"].Items
    $holdsCount = $holds.Count
    Write-Host "Holds in this site:" -ForegroundColor DarkCyan
    for($i=0;$i -lt $holdsCount;$i++)
    {
        $tip = "["+$i+"] "+$holds[$i].title
        Write-Host $tip -ForegroundColor DarkYellow
    }
    $choose = Read-Host "Choose the hold you wanna remove from items"
    $itemHold = $web.Lists["Holds"].items[[int]$choose]
    [Microsoft.Office.RecordsManagement.Holds.Hold]::RemoveHold($items,$itemHold,"Hold removed from all the items")
    $web.Dispose()
    $site.Dispose()
}
$siteURL = "http://exhv-3073/sites/1116site1"
$listTitle = "1116docLib"
RemoveHolds $siteURL $listTitle

直接在PowerShell或者PowerShell ise中运行这段脚本:

如上所示,在输入siteURL和listTitle后运行程序,选择相应的hold,就可以对list中的items进行解锁了。解锁后的items就可以正常进行编辑或删除了。

问题2:

1.为items添加hold和remove hold from items一样麻烦;

2.无法批量地为items添加hold。

同样用一个脚本解决,只需要将上段代码中稍作修改即可:

Add-PSSnapin Microsoft.SharePoint.PowerShell
function AddHolds($siteURL,$listTitle)
{
    $site = Get-SPSite $siteURL
    $web = $site.RootWeb
    $list = $web.Lists[$listTitle]
    $items = $list.Items
    $holds = $web.Lists["Holds"].Items
    $holdsCount = $holds.Count
    Write-Host "Holds in this site:" -ForegroundColor DarkCyan
    for($i=0;$i -lt $holdsCount;$i++)
    {
        $tip = "["+$i+"] "+$holds[$i].title
        Write-Host $tip -ForegroundColor DarkYellow
    }
    $choose = Read-Host "Choose the hold you wanna add to items"
    $itemHold = $web.Lists["Holds"].items[[int]$choose]
    [Microsoft.Office.RecordsManagement.Holds.Hold]::SetHold($items,$itemHold,"Hold added")
    $web.Dispose()
    $site.Dispose()
}
$siteURL = "http://exhv-3073/sites/1116site1"
$listTitle = "1118docLib"
AddHolds $siteURL $listTitle

直接在PowerShell或者PowerShell ise中运行这段脚本:

另,一键执行所有和Hold processing and reporting的jobs:

#Run the 'Hold processing and reporting'timer jobs.
$jobs = Get-SPTimerJob|where{$_.name -like '*hold*'}
foreach($job in $jobs)
{
    Start-SPTimerJob $job
}

或:

Get-SPTimerJob|where{$_.name -like '*Hold*'}|Start-SPTimerJob

参考文献:

How to add to a hold using Powershell and Programmatically in SharePoint 2010

How to remove from a hold using PowerShell and programmatically in SharePoint 2010

相关文章
|
Go C# Windows
SharePoint自动化系列——Solution auto-redeploy using Selenium(C#)
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 本来的想法是做一个可以自动卸载并且部署新solution到SharePoint farm的tool。
1037 0
|
索引 存储
SharePoint自动化系列——Set MMS field value using PowerShell.
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 本章将总结一下设置SharePoint list中item的Managed Metadata field value的方法。
805 0
SharePoint自动化系列——Upload files to SharePoint library using PowerShell.
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 日常的SharePoint站点测试中,我们经常要做各种各样的数据,今天又写了几个脚本,发现自己写的脚本越来越多,所以我决定整理一下,并把一些常用的可复用的方法陆续发布上来。
1183 0
SharePoint自动化系列——通过PowerShell在SharePoint中批量做数据
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ PowerShell是基于.NET的一门脚本语言,对于SharePoint一些日常操作支持的很好。
1149 0
|
Web App开发
SharePoint自动化系列——通过Coded UI录制脚本自动化创建SharePoint Designer Reusable Workflow
Coded UI非常好,我开始还在想,怎么样能让一个通过SharePoint Designer创建的Workflow publish三百五十次?想不到一个好的方法,也不知道SharePoint Designer里那个publish按钮调用的是什么方法,想来想去还是用Coded UI尝试了一下,发现也挺好,在资源允许的情况下,就这样完成了SPD Workflow的自动化创建: 1.
1010 0
|
2月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
73 4
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
63 4
|
25天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
1月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
57 4