2012-07-10 66 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

相關問題