(第2部分)SharePoint 2010,Powershell-循环浏览所有文档库,创建视图并将其设置为默认值



这是一个由@marek grzenkowicz非常友好地处理的查询。

问题1)脚本运行时生成错误。有人提到,您不能修改正在枚举的集合的元素。你能告诉我如何解决这个问题吗?尽管为了避免这个问题而做出了改变,但仍在发生

An error occurred while enumerating through a  collection: Collection was modified; enumera tion operation may not execute.. At C:Usersquickdev1DocumentsLoopThroughAl lLibrariesCreateView.ps1:7 char:10
+   foreach <<<< ($list in $web.Lists) {
    + CategoryInfo          : InvalidOperati     on: (Microsoft.Share...on+SPEnumerator:S     PEnumerator) [], RuntimeException
    + FullyQualifiedErrorId : BadEnumeration

问题2)我想加入一些逻辑来检查名称为"Detailed"的现有视图是否已经存在,如果已经存在,则跳过该库,但我不确定如何实现。

如果有人能帮忙,那就太棒了。

谢谢,

Ashley

完整脚本

Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
$siteURL = "http://sp14fdev01/"
$site = Get-SPSite($siteURL)
foreach($web in $site.AllWebs) {
  foreach($list in $web.Lists) {
    if($list.BaseType -eq "DocumentLibrary") {
// the variables `$web` and `$list` already reference the objects you need
      //$site = New-Object Microsoft.SharePoint.SPSite($SiteURL) ;
      //$web = $site.OpenWeb($SiteURL);
// new instance of the list is necessary to avoid the error "Collection was modified"
      $newList = $web.Lists.item($list.ID);
      $viewfields = New-Object System.Collections.Specialized.StringCollection 
      $viewfields.Add("DocIcon") 
      $viewfields.Add("LinkFilename") 
      $viewfields.Add("_UIVersionString") 
      $viewfields.Add("FileSizeDisplay") 
      $viewfields.Add("Created") 
      $viewfields.Add("Modified") 
      $viewfields.Add("Editor") 
      [void]$newList.Views.Add("Detailed", $viewfields, "", 100, $true, $true)
      $newList.Update();
// setting the default view
      $view=$newList.Views["Detailed"]
      $view.DefaultView = $true
      $view.Update()
    }
  }
  $web.Dispose();
}
$site.Dispose();

由于您正在修改要循环的集合,因此必须使用foreach的for循环instad。

像这样:

foreach($web in $site.AllWebs)
{
    $listCounter = $web.Lists.Count
    for($i=0;$i -le $listCounter;$i++)
    {
        $list = $web.Lists[$i]
        //etc....
    }
}

相关内容

  • 没有找到相关文章

最新更新