2012-07-10 64 views
2

我在调试此脚本时遇到问题。它基于SO之前的一个问题,并且非常接近工作。SharePoint 2010 - 遍历所有文档库,创建视图并将其设置为默认

要求: 脚本循环浏览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(); 

回答

2

您的脚本循环只在1个站点集合称为[http://dev1share][1]

如果你想循环的所有网站集,您必须获得web应用对象,而不是SP- Sharepoint层次模型中较低的站点。

为了获得web应用对象和迭代 - 使用这样的代码:

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

嗨@Redzio,谢谢。感觉很傻。将随着变化进行测试。 – AshFlaw 2012-07-11 13:26:52

+0

事实确实如此。它仍然会在运行时引发错误,但它似乎无法阻止脚本运行并按预期工作。谢谢。 – AshFlaw 2012-07-11 13:48:28

相关问题