2

我在调试这个脚本时遇到了麻烦。它基于关于 SO 的较早问题,并且几乎可以正常工作。

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

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

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

谢谢,

阿什利

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();
4

1 回答 1

2

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

如果要循环所有站点集合,则必须获取 webapplication 对象,而不是在 Sharepoint 层次结构模型中较低的 SP-Site。

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

$webapplication = Get-SPWebApplication "Webapplication Name"
foreach($site in $webapp.Sites){
    foreach($web in $site.AllWebs){
        // Your script with creating views
    }
}
于 2012-07-10T18:01:50.343 回答