SharePoint 2010 - 遍历所有文档库,创建视图并将其设置为默认值

时间:2012-07-10 16:34:43

标签: sharepoint powershell

我在调试此脚本时遇到问题。它是基于早期关于SO的问题而且它几乎正在发挥作用。

要求: 该脚本循环遍历Web应用程序上的每个文档库,创建一个名为“Detailed”的视图并将其设置为默认视图。

问题: 它似乎无法遍历网站集。它将在第一个网站集及其库上成功创建视图,但在后续网站集上失败。

希望这只是一件简单的事情。任何帮助深表感谢。

谢谢,

阿什利

Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue

$siteURL = "http://dev1share"
$site = Get-SPSite($siteURL)

foreach($web in $site.AllWebs) {

$listCounter = $web.Lists.Count
for($i=0;$i -le $listCounter;$i++) {

    $list = $web.Lists[$i]
    if($list.BaseType -eq "DocumentLibrary") {
    $newList = $web.Lists.item($list.ID);


  $viewfields = New-Object System.Collections.Specialized.StringCollection 
  $viewfields.Add("DocIcon") 
  $viewfields.Add("LinkFilename") 
  $viewfields.Add("_UIVersionString") 
  $viewfields.Add("Modified") 
  $viewfields.Add("Created") 
  $viewfields.Add("Editor") 
  $viewfields.Add("FileSizeDisplay") 

  [void]$newList.Views.Add("Detailed", $viewfields, "", 100, $true, $true)
  $newList.Update();

  $view=$newList.Views["Detailed"]
  $view.DefaultView = $true
  $view.Update()
}
}

$web.Dispose();
}
$site.Dispose();

1 个答案:

答案 0 :(得分:2)

您的脚本仅在名为[http://dev1share][1]

的1个网站集中循环

如果要循环所有网站集,则必须获取Web应用程序对象,而不是Sharepoint层次结构模型中较低的SP-Site。

获取webapplication对象并进行迭代 - 使用如下代码:

$webapplication = Get-SPWebApplication "Webapplication Name"
foreach($site in $webapp.Sites){
    foreach($web in $site.AllWebs){
        // Your script with creating views
    }
}