更新列表视图 SharePoint PowerShell
Posted
技术标签:
【中文标题】更新列表视图 SharePoint PowerShell【英文标题】:updating List views SharePoint PowerShell 【发布时间】:2021-07-08 21:52:34 【问题描述】:我希望能够更新两个不同列表中所有视图的“JSLink”属性。但是我不断收到以下错误:
“集合已修改;枚举操作可能无法执行。”
我有以下 PowerShell:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Temp Site
$siteColl = "mysitecollectionURL"
$site = Get-SPSite $siteColl
#JS file to add
$jSFile = "clienttemplates.js"
#Lists to update
$masterTasks = "Master Tasks"
$allTasks = "All Tasks"
Write-Host "`nChecking site:" $site.RootWeb.URL
#Get root web
$web = $site.RootWeb
#Iterating lists
foreach($list in $web.Lists)
if($list.Title -eq $masterTasks)
write-host "`n`tMaster Tasks list found"
#Iterating views
foreach($view in $list.Views)
$view.JSLink = $jSFile
$view.Update()
if($list.Title -eq $allTasks)
write-host "`n`tAll Tasks list found"
#Iterating views
foreach($view in $list.Views)
$view.JSLink = $jSFile
$view.Update()
$web.Dispose()
Write-Host "`n"
我哪里出错了?任何建议将不胜感激..
【问题讨论】:
【参考方案1】:使用 for 循环代替 foreach,因为在 foreach 循环中,不能删除或更新属性:
$web = $site.RootWeb
For($i=0; $i -lt $web.Lists.count; $i++)
if($web.Lists[$i].Title -eq $masterTasks)
write-host "`n`tMaster Tasks list found"
For($j=0; $j -lt $list.Views.Count; $j++)
$view=$list.Views[$j]
$view.JSLink = $jSFile
$view.Update()
if($web.Lists[$i].Title -eq $allTasks)
write-host "`n`tAll Tasks list found"
#Iterating views
For($k=0; $k -lt $list.Views.Count; $k++)
$otherview= $list.Views[$k]
$otherview.JSLink = $jSFile
$otherview.Update()
$web.Dispose()
这里有一篇博客指定了与解决方法相同的错误信息,请参考:
Collection was modified; enumeration operation may not execute
【讨论】:
以上是关于更新列表视图 SharePoint PowerShell的主要内容,如果未能解决你的问题,请参考以下文章
带有常用按钮菜单栏的 Sharepoint 2013 列表视图
SharePoint Server 2019 中的日历列表视图
Sharepoint 2010 客户端对象模型 - 将列表数据分配给网格视图
将 SharePoint 2007 列表/视图导出为 PDF(并通过链接下载)