如何批量删除SharePoint列表中含指定关键词的视图
以下是几种高效的批量删除方案,解决手动删除耗时过长的问题:
方法1:PnP PowerShell(推荐,操作高效)
这是批量处理SharePoint对象最便捷的方式之一,步骤如下:
- 安装PnP PowerShell模块(未安装时执行):
Install-Module -Name PnP.PowerShell -Force -AllowClobber
- 连接到目标SharePoint站点:
Connect-PnPOnline -Url "https://你的租户名.sharepoint.com/sites/你的站点名" -Interactive
- 执行批量删除脚本(替换占位符为你的实际信息):
# 配置参数 $listName = "你的列表名称" $targetKeyword = "要匹配的关键词" $excludeViews = @("全部项目", "默认视图名称") # 可选:指定要保留的视图 # 获取符合条件的视图 $viewsToDelete = Get-PnPList -Identity $listName | Get-PnPView | Where-Object { $_.Title -match $targetKeyword -and $excludeViews -notcontains $_.Title } # 批量删除 foreach ($view in $viewsToDelete) { Write-Host "正在删除视图: $($view.Title)" Remove-PnPView -List $listName -Identity $view.Id -Force }
说明:脚本会自动跳过你指定保留的视图,避免误删核心视图;执行前可以先注释掉
Remove-PnPView行,用Write-Host预览要删除的视图列表,确认无误后再执行删除。
方法2:修正SharePoint REST API调用
你之前的问题大概率是端点路径或请求头配置错误,正确的删除流程如下:
步骤1:筛选目标视图
发送GET请求获取包含关键词的视图:
GET https://你的租户名.sharepoint.com/sites/你的站点名/_api/web/lists/getbytitle('你的列表名称')/views?$select=Id,Title&$filter=substringof('关键词',Title)
步骤2:删除单个视图
对每个筛选出的视图,发送DELETE请求到以下端点:
DELETE https://你的租户名.sharepoint.com/sites/你的站点名/_api/web/lists/getbytitle('你的列表名称')/views('视图ID')
请求头必须包含:
Accept: application/json;odata=verboseX-RequestDigest: 站点的表单摘要值(可通过POST请求/_api/contextinfo获取该值)
方法3:Power Automate中实现批量删除
Power Automate自带操作没有删除视图的选项,但可以通过HTTP动作调用REST API完成:
- 创建手动触发的流,添加发送HTTP请求到SharePoint动作:
- 站点地址:目标SharePoint站点URL
- 方法:
GET - Uri:
_api/web/lists/getbytitle('你的列表名称')/views?$select=Id,Title&$filter=substringof('关键词',Title)
- 添加应用到每一个动作,选择上一步返回的
value数组; - 在循环内添加另一个发送HTTP请求到SharePoint动作:
- 站点地址:目标站点URL
- 方法:
DELETE - Uri:
_api/web/lists/getbytitle('你的列表名称')/views('@{items('应用到每一个')?['Id']}') - 高级选项中添加请求头:
Accept=application/json;odata=verbose
优化建议:在流的设置中调整并发控制(最高可设为50),提升批量删除的速度。
内容的提问来源于stack exchange,提问作者Dani Bostina
相关产品推荐
相关产品推荐

